Рассчитать среднее значение для всех столбцов каждые 12 часов - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть датафрейм, и я хочу рассчитать среднее значение каждые 12 часов для всех столбцов.датафрейм содержит более 200 тыс. строк.

          DateTime Speed   TRQ         ...    PtoP3  RMS3   Crest3
0       2016-07-01 00:00   994  35.4   ...       NA    NA       NA
1       2016-07-01 00:01   995  34.6   ...       NA    NA       NA
2       2016-07-01 00:02   995    34   ...       NA    NA       NA

я написал это

Present_data.to_datetime(Present_data['DateTime'])
Total_12hravg_all = Present_data.groupby(pd.Grouper(freq='12H', key='DateTime')).mean()
print(Total_12hravg_all)

и получил эту ошибку

TypeError: Действительно только с DatetimeIndex, TimedeltaIndex илиPeriodIndex, но получил экземпляр «Index»

1 Ответ

0 голосов
/ 19 сентября 2018

Если Datetime - это столбец :

Ваше решение должно работать хорошо:

Present_data['DateTime'] = pd.to_datetime(Present_data['DateTime'])
Total_12hravg_all = Present_data.groupby(pd.Grouper(freq='12H', key='DateTime')).mean()

Альтернативное решение - использовать resample с параметром on:

Present_data['DateTime'] = pd.to_datetime(Present_data['DateTime'])
Total_12hravg_all = Present_data.resample('12H', on='DateTime').mean()

Или создать DatetimeIndex:

Present_data['DateTime'] = pd.to_datetime(Present_data['DateTime'])
Present_data = Present_data.set_index('DateTime')
Total_12hravg_all = Present_data.groupby(pd.Grouper(freq='12H')).mean()
#resample
#Total_12hravg_all = Present_data.resample('12H').mean()

Если Datetime является индексом :

Present_data.index = pd.to_datetime(Present_data.index)

Total_12hravg_all = Present_data.groupby(pd.Grouper(freq='12H')).mean()
#resample
#Total_12hravg_all = Present_data.resample('12H').mean()

Окончательное решение:

Present_data['DateTime'] = pd.to_datetime(Present_data['DateTime'])
Present_data = Present_data.set_index('DateTime')

#convert non numeri values to NaNs
Present_data = Present_data.apply(lambda x: pd.to_numeric(x, errors='coerce'))

Total_12hravg_all = Present_data.groupby(pd.Grouper(freq='12H')).mean()
#resample
#Total_12hravg_all = Present_data.resample('12H').mean()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...