Как я могу извлечь данные из моих pandas временных рядов? - PullRequest
0 голосов
/ 26 февраля 2020

Рассмотрим, например,

                    Temp       Hum        WS
DateTime                                         
2019-08-01 00:00:00   35.9615  20.51460  1.287225
2019-08-01 00:20:00   36.5795  21.92870  2.213225
2019-08-01 00:40:00   36.2885  22.62970  2.331175
2019-08-01 01:00:00   36.1095  22.76075  2.532800

Интервал явно равен 20 минутам, но есть ли функция для его извлечения? Я пишу скрипт для повторной выборки в более низкое разрешение, используя df.resample (rate) .mean (). Я хочу убедиться, что мы запускаем скрипт только тогда, когда скорость больше, чем скорость df. Нет смысла преобразовывать данные с более низким разрешением в более высокое разрешение. В этом примере скорость «60T» будет приемлемой, поскольку она преобразует 20-минутные данные в почасовые данные. Но ставка «10 т» не должна быть приемлемой.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

Попробуйте:

# if index not datetime object, then
# df.index = pd.to_datetime(df.index)
>>> pd.Series(df.index).diff().mean().components.minutes
20
#or,
>>> pd.Series(df.index).diff().iloc[-1].components.minutes
20
1 голос
/ 26 февраля 2020

Это зависит от данных, если указана частота, используйте DatetimeIndex.freqstr:

print (df.index.freqstr)
20T

Если не указано, можно сравнить ее с преобразованным DatetimeIndex с DataFrame.asfreq:

idx = df.asfreq('20T').index
m = (df.index == idx).all()
print (m)
True

print (idx.freqstr)
20T
...