熊猫将月平均值添加到列中

时间:2020-04-02 02:23:09

标签: python pandas

这是我的数据框。

   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
…            …  …

有什么建议吗?

2 个答案:

答案 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