首页 文章

Python Pandas:计算所有列上唯一值的频率

提问于
浏览
1

我有一个问题,如何计算在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]是数据框中所有列的列表 . 但这是计算值在列中出现的次数 .

任何意见/建议都会有很大帮助 . 谢谢

1 回答

  • 2

    你可以 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,然后您可以使用它来构建一个具有您想要的任何列名称的框架 .

相关问题