2016-04-07 56 views
1

我有个问题,如何计算在熊猫数据框的每列中出现的唯一值的数量?Python Pandas:计算所有列上唯一值的频率

说我有一个名为DF一个数据帧是这样的:

1 2 3 4  
a yes f c 
b no f e 
c yes d h 

我希望得到的输出,显示唯一值的四列内的频率。输出结果类似于:

Column # of Unique Values 
1   3 
2   2 
3   2 
4   3 

我不需要知道唯一值是什么,每个列中有多少。

我已经打得四处是这样的:

df[all_cols].value_counts() 

[all_cols]是数据帧中的所有列的列表。但是这是计算该值出现在列内的次数。

任何意见/建议将是一个很大的帮助。由于

回答

2

你可以applySeries.nunique

>>> df.apply(pd.Series.nunique) 
1 3 
2 2 
3 2 
4 3 
dtype: int64 

或者你可以在拆散的版本的框架做了groupby/nunique

>>> df.unstack().groupby(level=0).nunique() 
1 3 
2 2 
3 2 
4 3 
dtype: int64 

这两个生产系列,然后你可以使用用你想要的任何列名建立一个框架。

+0

非常感谢你,这正是我所期待的。我感谢帮助! – da4l

+0

@ da4l不说谢谢,只需点击upvote并接受按钮 – Private