【发布时间】:2020-08-14 10:50:04
【问题描述】:
我有每月数据集
df = pd.DataFrame({'Month':[1,2],
'Plan':[310,620],
'Month_start_date': ['2020-01-01','2020-02-01']})
print(df)
df['Month_start_date'] = (pd.to_datetime(df['Month_start_date'], format='%Y/%m/%d')
.dt.to_period('m').dt.to_timestamp())
df = df.set_index('Month_start_date')
我以我想重新索引的格式创建了一个日期列表
start = '2020-01-01'
end = '2020-02-29'
dates = pd.date_range(start, end, freq='D')
dates
当我尝试使用此代码将数据框更改为每日时
df_daily = df.reindex(dates, method='ffill')
print(df_daily)
这是我得到的输出
Month Plan
2020-01-01 1 310
2020-01-02 1 310
2020-01-03 1 310
2020-01-04 1 310
2020-01-05 1 310
2020-01-06 1 310
2020-01-07 1 310
2020-01-08 1 310
2020-01-09 1 310
2020-01-10 1 310
...
该列表按预期持续到 2 月 29 日。然而,每天的计划都是一样的。我怎样才能让它看起来像这样?
Month Plan
2020-01-01 1 10
2020-01-02 1 10
2020-01-03 1 10
2020-01-04 1 10
2020-01-05 1 10
2020-01-06 1 10
2020-01-07 1 10
2020-01-08 1 10
2020-01-09 1 10
2020-01-10 1 10
...
2020-02-17 2 21.38
2020-02-18 2 21.38
2020-02-19 2 21.38
2020-02-20 2 21.38
2020-02-21 2 21.38
2020-02-22 2 21.38
2020-02-23 2 21.38
2020-02-24 2 21.38
2020-02-25 2 21.38
2020-02-26 2 21.38
2020-02-27 2 21.38
2020-02-28 2 21.38
2020-02-29 2 21.38
只需将计划除以当月的天数,即可在所有日期之间平均分配。由于 2 月份的计划是 620,所以每天得到 620/29,即 21.38
【问题讨论】: