我有一个问题,如何计算熊猫数据框每一列中出现的唯一值的数量?

假设我有一个名为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]是数据框中所有列的列表。但这是在计算值在列中出现的次数。

任何建议/建议都会有很大帮助。谢谢

最佳答案

您可以apply 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


两者都产生一个Series,然后您可以用它来构建带有所需列名的框架。

关于python - Python Pandas:计算所有列上唯一值的频率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36466341/

10-12 23:30