Усреднение значений дат в фрейме данных - PullRequest
2 голосов
/ 25 февраля 2020

У меня есть следующий фрейм данных

data = pd.DataFrame({
'date': ['1988/01/12', '1988/01/13', '1988/01/14', '1989/01/20','1990/01/01'],
'value': [11558522, 12323552, 13770958, 18412280, 13770958]
}) 

Есть ли способ в python, чтобы я мог усреднить значение за целый месяц и сделать его новым значением за этот месяц, т.е. я хочу усреднить Значение 1988-01 и сделать его окончательным значением для 1988-01. Я попробовал групповой метод, но это не сработало

new_df=data.groupby(['date']).mean()

1 Ответ

1 голос
/ 25 февраля 2020

Используйте месячные периоды, созданные 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...