在所有列中查找唯一值

时间:2017-02-09 05:03:05

标签: pandas

我可以检查给定列的唯一值的数量。

len(df.createdby.unique())

但是有没有一种方法可以知道所有列的唯一值? 我可以运行这两个循环并获得我需要的结果。但我正在寻找一种实现这一目标的pythonic和优雅方式。

for i in df.columns:
    exec("print len(df.%s.unique())" % i)

for i in df.columns:
    print i

3 个答案:

答案 0 :(得分:2)

0.20.0开始使用df.nunique()

In [234]: df = pd.DataFrame({'A': [1, 2, 3], 'B': [1, 1, 1]})

In [235]: df.nunique()
Out[235]:
A    3
B    1
dtype: int64

答案 1 :(得分:1)

我认为您需要Series.nunique,但DataFrame尚未实施,因此需要apply

print (df.apply(lambda x: x.nunique()))

样品:

df = pd.DataFrame({'A':[1,1,3],
                   'B':[4,5,6],
                   'C':[7,7,7]})

print (df)
   A  B  C
0  1  4  7
1  1  5  7
2  3  6  7

print (df.apply(lambda x: x.nunique()))
A    2
B    3
C    1
dtype: int64

答案 2 :(得分:0)

使用drop_duplicates方法

len(df.drop_duplicates())