我可以检查给定列的唯一值的数量。
len(df.createdby.unique())
但是有没有一种方法可以知道所有列的唯一值? 我可以运行这两个循环并获得我需要的结果。但我正在寻找一种实现这一目标的pythonic和优雅方式。
for i in df.columns:
exec("print len(df.%s.unique())" % i)
for i in df.columns:
print i
答案 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())