将月末或周末系列转换为每日系列

时间:2017-10-11 13:09:46

标签: python pandas

让我们说我有一个像这样的熊猫系列:

monthly = 
2017-05-31    403.43
2017-06-30    292.92
2017-07-31    184.62

索引的类型为'datetime64 [ns]'。

我想将其转换为每日系列,其中每天的价值与月份的价值相同,即

daily_imputed = 
2017-05-01   403.43
2017-05-02   403.43
2017-05-03   403.43
2017-05-04   403.43
....
2017-07-29   184.62
2017-07-30   184.62
2017-07-31   184.62

实现这一目标的好方法是什么?

另外,让我们说我有一个双周系列,

biweekly = 
2017-06-26    151.6
2017-07-10    204.7
2017-07-24    119.2

所以现在我想将它转换为每日每两周价值被估算为每日价值:

daily_imputed = 
2017-06-13    151.6
2017-06-14    151.6
....
2017-07-23    119.2
2017-07-24    119.2

与每日每日相同的逻辑与前一天相差13天。这就是为什么2017-06-26将在2017-06-13的每日推算数据中开始。

1 个答案:

答案 0 :(得分:3)

我会使用重新采样,唯一的问题是它的第一个索引不会在第一个月的第一天开始,但你可以重新索引

df.resample('D').first().bfill()

你可以像这样重新索引:

import datetime as dt
start = df.index[0]
end = df.index[-1]
d_range = pd.date_range(dt.date(start.year, start.month, 1), end)
df.reindex(d_range).bfill()

与你的双周df相同的过程应该有效。

编辑: 现在我正在考虑它,您可以使用新的日期范围重新索引整个数据框,并在不使用重新采样的情况下回填/转发填充它! < / p>