让我们说我有一个像这样的熊猫系列:
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的每日推算数据中开始。
答案 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>