这是我的数据框。
index y
6/17/2018 100
6/24/2018 200
7/1/2018 100
7/8/2018 200
7/15/2018 300
… …
所需的数据框为:
index y MonthlyAverage
6/17/2018 100 150
6/24/2018 200 150
7/1/2018 100 200
7/8/2018 200 200
7/15/2018 300 200
… … …
有什么建议吗?
答案 0 :(得分:1)
我会使用to_period('M')
将日期转换成月份并按日期分组
df['index'] = pd.to_datetime(df['index'])
df['MonthlyAverage'] = (df.groupby(df['index'].dt.to_period('M'))
['y'].transform('mean')
)
输出:
index y MonthlyAverage
0 2018-06-17 100 150
1 2018-06-24 200 150
2 2018-07-01 100 200
3 2018-07-08 200 200
4 2018-07-15 300 200
答案 1 :(得分:0)
首先,我们需要通过to_datetime
将索引转换为日期时间,然后执行transform
df['index']=pd.to_datetime(df.index,format='%m/%d/%Y')
df['mean']=df.groupby(df['index'].dt.strftime('%Y%d')).y.transform('mean')
df