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

时间:2019-03-24 02:45:17

标签: python pandas group-by jupyter-notebook

我需要计算列表的值出现在不同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)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

尝试以下操作,它首先创建一个空系列,然后将其与value_counts系列组合:

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