【问题标题】:How to count occurrences of values of a list in a column of a different dataframe?如何计算不同数据框列中列表值的出现次数?
【发布时间】:2019-08-14 15:52:33
【问题描述】:

我需要计算列表的值出现在不同 DataFrame 的列中的次数。

我尝试过使用df['Column'].value_counts()。 但是,如果一个值在列表中但不在列中,则它不会显示在结果中。

df = pd.DataFrame({'Column': [HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW]})

list = ['HIGH', 'MEDIUM', 'LOW']

我希望输出是:

HIGH      3
MEDIUM    0
LOW       4

但是使用.value_counts() 我得到:

HIGH      3
LOW       4

有人可以指出我如何做到这一点吗?是否可以编写一段代码,以便我的输出始终显示 HIGH、MEDIUM 和 LOW 的计数,而不管数据是如何分布的? (下次我加载数据时,可能没有 HIGH 值,而不是 MEDIUM)

【问题讨论】:

    标签: python pandas group-by jupyter-notebook


    【解决方案1】:

    快速修复reindex

    df.Column.value_counts().reindex(list,fill_value=0)
    HIGH      3
    MEDIUM    0
    LOW       4
    Name: Column, dtype: int64
    

    另一种方式pd.Categorical

    pd.Categorical(df.Column,list).value_counts()
    HIGH      3
    MEDIUM    0
    LOW       4
    dtype: int64
    

    【讨论】:

      【解决方案2】:

      试试下面,它先创建一个空系列,然后将其与 value_counts 系列结合:

      pd.Series(0, index=list).combine(df.value_counts(), max)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-12
        • 1970-01-01
        • 1970-01-01
        • 2016-10-23
        • 1970-01-01
        • 2011-02-21
        • 2021-10-15
        • 2018-10-03
        相关资源
        最近更新 更多