我有一个包含10 millions行的大DF,我需要找到每列的唯一编号。
我写了下面的函数:(需要返回一个序列)
def count_unique_values(df):
return pd.Series(df.nunique())我得到了这个输出:
Area 210
Item 436
Element 4
Year 53
Unit 2
Value 313640
dtype: int64预期结果应为值313641。
当我这么做的时候
df['Value'].unique()我确实得到了答案。不明白为什么我在nunique()那里得到的更少。
发布于 2019-05-26 13:05:48
因为DataFrame.nunique省略了缺失值,因为缺省参数dropna=True,所以Series.unique函数不是。
示例
df = pd.DataFrame({
'A':list('abcdef'),
'D':[np.nan,3,5,5,3,5],
})
print (df)
A D
0 a NaN
1 b 3.0
2 c 5.0
3 d 5.0
4 e 3.0
5 f 5.0
def count_unique_values(df):
return df.nunique()
print (count_unique_values(df))
A 6
D 2
dtype: int64
print (df['D'].unique())
[nan 3. 5.]print (df['D'].nunique())
2
print (df['D'].unique())
[nan 3. 5.]解决方案是添加参数dropna=False
print (df['D'].nunique(dropna=False))
3
print (df['D'].unique())
3所以在你的函数中:
def count_unique_values(df):
return df.nunique(dropna=False)
print (count_unique_values(df))
A 6
D 3
dtype: int64https://stackoverflow.com/questions/56310788
复制相似问题