我有一个如下数据框,我需要编写一个函数,根据输入参数将此数据转换为每周(星期日作为结束日期)或每月:
每日价格df数据样本:
date price_chair vol_glass
02-09-2018 2 6
03-09-2018 1 5
04-09-2018 3 6
05-09-2018 4 8
10-09-2018 5 10
15-09-2018 2 10
18-09-2018 2 10
01-10-2018 3 20
如果选项是每月,则取一个月的平均价格椅子和玻璃量的总和,这些列可以变化:
year_month price_chair_avg_monthly vol_glass_sum_monthly
2018-09 2.71 55
2018-10 3 20
如果选项是每周,则取平均价格椅子和一周的玻璃体积总和,这些列可能会有所不同:
date price_chair_avg_weekly vol_glass_sum_weekly
02/09/18 2 6
09/09/18 2.67 19
16/09/18 3.5 20
23/09/18 2 10
30/09/18
07/10/18 3 20
使用resample
带有Resampler.agg
与字典指定列和重采样功能:
#if first column is not index
#df = df.set_index('date')
df.index = pd.to_datetime(df.index, dayfirst=True)
df1 = df.resample('MS').agg({'price_chair':'mean','vol_glass':'sum'})
print (df1)
price_chair vol_glass
date
2018-09-01 2.714286 55
2018-10-01 3.000000 20
df2 = df.resample('W').agg({'price_chair':'mean','vol_glass':'sum'})
print (df2)
price_chair vol_glass
date
2018-09-02 2.000000 6
2018-09-09 2.666667 19
2018-09-16 3.500000 20
2018-09-23 2.000000 10
2018-09-30 NaN 0
2018-10-07 3.000000 20
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句