Pandas Dataframe Forward填写到当前季度

时间:2017-07-13 00:40:44

标签: python python-3.x pandas

我正在寻找到今年四季度的数据框前向填充。

我有以下数据框:

Quarter Name Value
2016Q4  A     2
2017Q1  B     3
2017Q2  C     1

需要输出:

Quarter Name Value
2016Q4  A     2
2017Q1  B     3
2017Q2  C     1
2017Q3  C     1

请注意,2017Q3是本季度,这是需要向前填补的内容。 任何帮助表示赞赏。 谢谢

1 个答案:

答案 0 :(得分:2)

确保Quarter是句点列

df.Quarter = pd.PeriodIndex(df.Quarter, freq='Q')

使用pd.period_range构建新索引,然后reindex

idx = pd.period_range(df.Quarter.min(), pd.datetime.now(), freq='Q')
df.set_index('Quarter').reindex(idx, method='ffill').reset_index()

   index Name  Value
0 2016Q4    A      2
1 2017Q1    B      3
2 2017Q2    C      1
3 2017Q3    C      1

要超级安全,只需将当前最近一个季度的新索引值添加到当前

pidx = pd.PeriodIndex(df.Quarter, freq='Q')
nidx = pd.period_range(pidx.max(), pd.datetime.now(), freq='Q')

df.Quarter = pidx

df.set_index('Quarter').reindex(pidx.union(nidx), method='ffill').reset_index()

   index Name  Value
0 2016Q4    A      2
1 2017Q1    B      3
2 2017Q2    C      1
3 2017Q3    C      1