在pandas数据框中打印唯一值

时间:2017-03-17 17:15:22

标签: python pandas

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]))

上面的代码将打印每列中唯一值的计数。我想打印仅对于'对象'的列的唯一值计数。类型。

有没有办法只过滤'对象'列

3 个答案:

答案 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)