python - 将缺失的月份添加到具有空值的数据框中

标签 python pandas dataframe

我有一个 DataFrame,我试图用它来查找某些事件的频率。所以比如罗列如下

Month Year Event UniqueID
1     2018 A     01
1     2018 A     02
2     2018 B     03
....

等我将所有内容按每年的事件频率分组。我使用以下代码做到了这一点。

这计算了所有事件,所以我可以对它们进行平均

df.groupby(['Year','Month','Event'])['Event'].size().rename('Count of Events').reset_index()

这给了我们一些东西

Year Month Event Count of Events
2018 01    A     2
2018 02    B     1
...

然后我通过使用

得到全年一个月发生频率的平均值
df.groupby(['Event'])['Count of Events'].mean()

这给了我平均值。但是我注意到的一件事是我可能有差距。例如,事件“A”可能发生在 1 月和 2 月,但不会发生在 3 月,因此这不会给我一个真正的全年“平均值”。 “堵塞”这些漏洞的最佳方法是什么?例如,在上面的示例列表中,

Month Year Event Count of Events
1     2018 A     02
1     2018 B     00
1     2018 C     00
2     2018 A     00
2     2018 B     00
2     2018 B     01
...

在我对其进行平均之前,这将是最佳的最终结果。谢谢!

最佳答案

您已接近解决方案。分组后,将数据帧拆分为“宽”形式(这样您将拥有月份和年份的每种组合),用 0 填充缺失值,然后将其堆叠回去:

df.groupby(["Month", "Year", "Event"]).size().unstack().fillna(0).stack()
#Month  Year  Event
#1      2018  A        2.0
#             B        0.0
#2      2018  A        0.0
#             B        1.0

关于python - 将缺失的月份添加到具有空值的数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54635454/

相关文章:

python - 在 Python 中子类化 float 类型,无法在 __init__() 中捕获异常

python - 如何使用 Twython 获得 Twitter 关注者?

python - 从多个均值向量求欧氏距离

python - 我必须将 Pandas DataFrame 每一行的数据与其余行的数据进行比较,有没有办法加快计算速度?

python - Pandas 数据框中的自定义数据排序

python - 时间戳转换为日期时间 Python、Pandas

python - 如何跟踪我在 python 中读入数据库的文件?

dataframe - Julia - 选择以另一个数据帧中的列为条件的数据帧的子集

python - 使用 read_xml 将数据从两个 XML 父节点导入到 Pandas DataFrame

python - .apply 可以使用其他团体的信息吗?