我有一个问题,如何计算 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] 是数据框中所有列的列表。但这是计算该值在列中出现的次数。
任何意见/建议都会有很大帮助。谢谢
最佳答案
您可以申请
Series.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
这两个都会生成一个系列,然后您可以使用它来构建具有您想要的任何列名称的框架。
关于Python Pandas : Counting the Frequency of unique values over all Columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36466341/