重新采样数据帧并将值除以新的采样频率

resample dataframe and divide values over new sample frequency

如何使用 resample() 对数据帧进行上采样以获得初始值除以新的采样频率?

具有每月采样频率的数据框

                       date        revenue
0 2021-11-01 00:00:00+00:00        300
1 2021-10-01 00:00:00+00:00        500
2 2021-09-01 00:00:00+00:00        100
3 2021-08-01 00:00:00+00:00        50
4 2021-07-01 00:00:00+00:00        200
5 2021-06-01 00:00:00+00:00        150

大致预期的 Dataframe revenue 在该月的几天内划分

                                 revenue
date                                    
2021-06-01 00:00:00+00:00    4.8
2021-06-02 00:00:00+00:00    4.8
2021-06-03 00:00:00+00:00    4.8
2021-06-04 00:00:00+00:00    4.8
2021-06-05 00:00:00+00:00    4.8
...                                  ...
2021-11-28 00:00:00+00:00    9.6
2021-11-29 00:00:00+00:00    9.6
2021-11-30 00:00:00+00:00    9.6
2021-11-31 00:00:00+00:00    9.6

也就是说,我想确保这些值除以该特定月份的天数

您可以使用 asfreq 将时间序列从每月频率转换为每日频率,然后使用 ffill 向前填充值,然后将 revenue 除以 daysinmonth 属性datetimeindex 的计算分配收入

s = df.set_index('date')
s.loc[s.index.max() + pd.offsets.MonthEnd()] = np.nan

s = s.asfreq('D').ffill()
s['revenue'] /= s.index.daysinmonth

print(s)
                             revenue
date                                
2021-06-01 00:00:00+00:00   5.000000
2021-06-02 00:00:00+00:00   5.000000
2021-06-03 00:00:00+00:00   5.000000
2021-06-04 00:00:00+00:00   5.000000
2021-06-05 00:00:00+00:00   5.000000
...
2021-07-24 00:00:00+00:00   6.451613
2021-07-25 00:00:00+00:00   6.451613
...
2021-11-30 00:00:00+00:00  10.000000