import pandas as pd
df = pd.DataFrame({'a':[1,2,3,4],'b':['a','b','d','d'],'c':['v','v','g','w']})
print(df.apply(lambda x: x.unique().shape[0]))

上面的代码将打印每列中唯一值的计数。我只想为“对象”类型的列打印唯一值的计数。

有什么方法可以只过滤“对象”列

最佳答案

您可以使用 select_dtypes() ,因为 @JulianCienfuegos 已经与 nunique() 结合使用:

In [9]: df.select_dtypes(include=['object']).apply(lambda x: x.nunique())
Out[9]:
b    3
c    3
dtype: int64

由于 @root 在从 Pandas 0.20.0 开始的注释中添加,应该可以使用 DataFrame.nunique() :
df.select_dtypes(include=['object']).nunique()

10-06 01:45