Я новичок в использовании python pandas и имею следующий сценарий, чтобы вытащить данные временных рядов из файла excel, установить даты = индекс, а затем захочет выполнить различные вычисления на привязка данных по дате. Сценарий:Индекс по диапазонам дат в Python Pandas
df = pd.read_excel("myfile.xls")
df = df.set_index(df.Date)
df = df.drop("Date",1)
df.index.name = None
df.head()
Выход из этого (чтобы дать вам ощущение данных) является:
Px1 Px2 Px3 Px4 Px5 Px6 Px7
2015-08-12 19.850000 10.25 7.88 10.90 109.349998 106.650002 208.830002
2015-08-11 19.549999 10.16 7.81 10.88 109.419998 106.690002 208.660004
2015-08-10 19.260000 10.07 7.73 10.79 109.059998 105.989998 210.630005
2015-08-07 19.240000 10.08 7.69 10.92 109.199997 106.430000 207.919998
2015-08-06 19.250000 10.09 7.76 10.96 109.010002 106.010002 208.350006
При попытке извлечь данные, основанные на одной дате, как df.loc['20150806']
, который работает, но когда я попробуйте извлечь фрагмент, как df.loc['20150806':'20150812']
Я возвращаю Empty DataFrame
.
Опять же, индекс является DateTimeIndex с «datetime64 [нс]» DTYPE =, длина = 1412, частота = Ни, TZ = Ни
Как я уже сказал, моя конечная цель состоит в том, чтобы быть в состоянии группы в данные по дням, месяцам, годам, различным периодам и т. д., а также выполнять расчеты по данным. Я хочу дать этот контекст, но даже не хочу вникать в это, потому что я явно застрял в чем-то более базовом - возможно, неправильно понимая, как работать с DateTimeIndex
Спасибо.
РЕДАКТИРОВАТЬ: Я думаю, что основная проблема, на которую я ссылался на индексирование, имеет какое-то отношение к freq = 0, bc, когда я пробовал более простые примеры со смежными сериями дат, у меня не было этой проблемы.
Ваш индекс не отсортирован, или, по крайней мере, он уменьшается, а не увеличивается. Вот почему нарезка возвращает пустой кадр данных (12-й август до 6-го августа в кадре) – joris
Попробуйте 'df = df.sort_index()', а затем попробуйте снова нарезать. – joris
Развернувшись на том, что предлагает @joris, вы также можете срезать путем изменения порядка одним из двух способов: 'df.loc ['2015-08-12': '2015-08-10']' или 'df.loc ['2015-08-10': '2015-08-12': - 1] 'Но без явного сортировки (хорошее предложение, конечно) не обязательно подразумевается, что результаты среза также будут отсортированы. Вы эффективно выполняете кусочек стиля «iloc». – JohnE