重新采样数据帧并将值除以新的采样频率
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
如何使用 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