Удалить метку времени и получать данные только каждые часы Python - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть куча данных временных меток в CSV-файле, например:

2012-01-01 00:00:00, data
2012-01-01 00:01:00, data
2012-01-01 00:02:00, data
      ...
2012-01-01 00:59:00, data
2012-01-01 01:00:00, data
2012-01-01 01:01:00, data

Я хочу удалять данные каждую минуту и ​​отображать только каждый час на python, как показано ниже:

2012-01-01 00:00:00, data
2012-01-01 01:00:00, data
2012-01-01 02:00:00, data

Может ли кто-нибудь помочь мне?Спасибо.

1 Ответ

0 голосов
/ 26 сентября 2019

Я считаю, что вам нужно использовать панд resample, вот пример того, как он используется для достижения желаемого результата.Тем не менее, имейте в виду, что, поскольку это операция передискретизации во время преобразования частоты, вы должны передать функцию того, как будут вести себя другие столбцы (суммирование всех значений, соответствующих новому таймфрейму, вычисление среднего значения, вычисление разницы и т. Д ...) в противном случае вам вернут DatetimeIndexResample.Вот пример:

import pandas as pd
index = pd.date_range('1/1/2000', periods=9, freq='40T')
series = pd.Series(range(9),index=index)
print(series)

Вывод:

2000-01-01 00:00:00    0
2000-01-01 00:40:00    1
2000-01-01 01:20:00    2
2000-01-01 02:00:00    3
2000-01-01 02:40:00    4
2000-01-01 03:20:00    5
2000-01-01 04:00:00    6
2000-01-01 04:40:00    7
2000-01-01 05:20:00    8

Применение resample ежечасно без прохождения функции агрегирования:

print(series.resample('H'))

Выход:

DatetimeIndexResampler [freq=<Hour>, axis=0, closed=left, label=left, convention=start, base=0]

После прохождения .sum():

print(series.resample('H').sum())

Выход:

2000-01-01 00:00:00     1
2000-01-01 01:00:00     2
2000-01-01 02:00:00     7
2000-01-01 03:00:00     5
2000-01-01 04:00:00    13
2000-01-01 05:00:00     8
Freq: H, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...