在数据框中平均日期值

时间:2020-02-25 08:39:44

标签: python pandas dataframe datetimeindex

我有以下数据框

"."

python中是否有一种方法可以平均一个月的值,并使该月的新值 即我想对1988-01年的值取平均值,并使其成为1988-01年的最终值。我尝试了groupby方法,但是没有用

MyFunctionApp

1 个答案:

答案 0 :(得分:1)

使用Series.dt.to_period创建的月份:

data['date'] = pd.to_datetime(data['date'])

new_df=data.groupby(data['date'].dt.to_period('m')).mean()
print (new_df)
                value
date                 
1988-01  1.255101e+07
1989-01  1.841228e+07
1990-01  1.377096e+07

或使用DataFrame.resample,并在必要时删除缺失的值:

new_df=data.resample('MS', on='date').mean().dropna()
print (new_df)
                   value
date                    
1988-01-01  1.255101e+07
1989-01-01  1.841228e+07
1990-01-01  1.377096e+07

或者您可以分别为MultiIndex使用月份和年份:

new_df=data.groupby([data['date'].dt.year.rename('y'),
                     data['date'].dt.month.rename('m')]).mean()
print (new_df)

               value
y    m              
1988 1  1.255101e+07
1989 1  1.841228e+07
1990 1  1.377096e+07