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]))
上面的代码将打印每列中唯一值的计数。我想打印仅对于'对象'的列的唯一值计数。类型。
有没有办法只过滤'对象'列
答案 0 :(得分:4)
您可以使用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()
答案 1 :(得分:3)
使用df.dtypes
df.loc[:, df.dtypes == object].apply(pd.Series.nunique)
b 3
c 3
dtype: int64
答案 2 :(得分:2)