Python dataframe конвертирует минутные данные в 30 минут / час - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь преобразовать данные, собранные за минуты, в интервалы 30 минут и 1 час. Dataframe:

dateTime            stepsDaily  
2019-11-11 11:58:00 0
2019-11-11 12:00:00 7
2019-11-11 12:01:00 27
2019-11-11 12:08:00 0
2019-11-11 12:13:00 0
... ...
2020-07-26 14:04:00 0
2020-07-26 14:07:00 0
2020-07-26 14:08:00 0
2020-07-26 14:09:00 0
2020-07-26 14:10:00 0

Я пробовал

df_steps.dateTime = pd.to_datetime(df_steps.dateTime)
df_steps.set_index("dateTime", drop=True, inplace=True)
df_steps.sort_index(inplace=True)
df_steps30 = df_steps.groupby([df_steps.index.hour]).sum()

Но это возвращает

dateTime stepsDaily
0   8352
1   9905
2   9154
3   5695
4   5626
5   24485
6   94481
7   155755
8   152925
9   152124
10  183447
11  153881
12  183888
13  235785
14  292723
15  314227
16  276683
17  232000
18  227208
19  209065
20  119630
21  56282
22  18181

Это не то, что я хочу. Вместо этого я хотел бы, чтобы он возвращал сумму шагов в час отдельно для всех дней в фрейме данных.

Что-то вроде:

2019-11-11 10:00:00 100
2019-11-11 11:00:00 75
2019-11-11 13:00:00 27
2019-11-11 14:00:00 677
2019-11-11 15:00:00 3

Есть идеи, что я делаю неправильно?

1 Ответ

2 голосов
/ 01 августа 2020

.resample() - это ключ.

Я предполагаю, что dateTime и stepsDaily - обычные столбцы в вашем фрейме данных. Таким образом, вы можете превратить dateTime в индекс, а затем выполнить повторную выборку с шагом в 1 час:

df.set_index('dateTime').resample('1h').sum()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...