我在pandas中有一个数据帧,比如:
year quarter value
2018 3 100
2018 4 200
2019 2 300
2019 3 380
2020 1 400在这方面,我希望2019-1,2019-4年是缺失的。我想用以前的行值创建并填充这些值。以使输出数据帧连续到本年度-季度,即2020-3:
year quarter value
2018 3 100
2018 4 200
2019 1 300
2019 2 300
2019 3 380
2019 4 380
2020 1 400
2020 2 400
2020 3 400发布于 2020-08-31 19:42:26
您可以通过将这两列都转换为季度期间来创建quarter PeriodIndex,然后使用DataFrame.reindex by period_range,最后分配回year和querter列:
idx = pd.to_datetime(df['year'].astype(str) + 'q' +
df['quarter'].astype(str)).dt.to_period('q')
per = pd.Timestamp('now').to_period('q')
df = (df.set_index(idx)
.reindex(pd.period_range(idx.min(), per), method='ffill')
.assign(year = lambda x: x.index.year,
quarter = lambda x: x.index.quarter))
print (df)
year quarter value
2018Q3 2018 3 100
2018Q4 2018 4 200
2019Q1 2019 1 200
2019Q2 2019 2 300
2019Q3 2019 3 380
2019Q4 2019 4 380
2020Q1 2020 1 400
2020Q2 2020 2 400
2020Q3 2020 3 400https://stackoverflow.com/questions/63669994
复制相似问题