如何统计不同数据框中一列中值在列表中出现的次数?

3

我需要计算一个列表中的值在另一个DataFrame的列中出现的次数。

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

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

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

I expect the output to be:

HIGH      3
MEDIUM    0
LOW       4

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

HIGH      3
LOW       4

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

2个回答

7

一个快速的解决方案是 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

0
尝试以下代码,它首先创建一个空序列,然后将其与value_counts序列联合起来: pd.Series(0, index=list).combine(df.value_counts(), max)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接