python - 在 pandas 数据框中用 0 填充缺失年份/季度的列

标签 python pandas

我有一个如下所示的数据框。某些 year_Quarter 缺少 value

import pandas as pd
pd.DataFrame({'Year_Quarter':['2017_Q1', '2017_Q3', '2017_Q4',
                             '2018_Q1', '2018_Q2', '2018_Q4'],
              'Value': [12, 14, 2, 44, 5, 33]})

Year_Quarter Value
0   2017_Q1   12
1   2017_Q3   14
2   2017_Q4   2
3   2018_Q1   44
4   2018_Q2   5
5   2018_Q4   33

我需要的是一个数据框,其中缺少的 Year_Quarter 填充为 0,如下所示:

pd.DataFrame({'Year_Quarter':['2017_Q1', '2017_Q2','2017_Q3', '2017_Q4',
                             '2018_Q1', '2018_Q2', '2018_Q3','2018_Q4'],
              'Value': [12, 0,14, 2, 44, 5, 0, 33]})


Year_Quarter Value
0   2017_Q1   12
1   2017_Q2   0
2   2017_Q3   14
3   2017_Q4   2
4   2018_Q1   44
5   2018_Q2   5
6   2018_Q3   0
7   2018_Q4   33

有人知道怎么做吗?多谢。

最佳答案

Munge dfYear_Quarter 变成句点

df = df.assign(
    Year_Quarter=
    df.Year_Quarter.map(lambda x: pd.Period(x.replace('_', ''), 'Q'))
).set_index('Year_Quarter')

创建一个周期范围内的索引

idx = pd.period_range(df.index.min(), df.index.max(), freq='Q', name=df.index.name)

然后使用reindex

df.reindex(idx, fill_value=0)

              Value
Year_Quarter       
2017Q1           12
2017Q2            0
2017Q3           14
2017Q4            2
2018Q1           44
2018Q2            5
2018Q3            0
2018Q4           33

关于python - 在 pandas 数据框中用 0 填充缺失年份/季度的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58720145/

相关文章:

python - 如何从 python Dash 服务器进行串行通信

python - Pandas iloc 不返回数据切片

python - 使用 Pandas 计算大于先前值的值

python - 使用 pandas 重复数据框中的项目

python - 为什么 Pandas 在访问具有列和索引值的 DataFrame 时不返回标量/字符串而不是系列?

python - 根据条件合并行

python - Scrapy 荣誉 rel=nofollow

python - 根据 WiFi 确定笔记本电脑的位置

python - 为什么不能在 Python 中重新导入?

python - 如何使用 Pandas 将数据从一行移动到另一行