У меня есть dataframe df1
проиндексированы DateTime с записями каждые минут в течение недели образца:Как получить весь день данные индекса соответствия один день
SAMPLE_TIME Bottom Top Out state
0 2015-07-15 16:41:56 48.625 55.812 43.875 1
1 2015-07-15 16:42:55 48.750 55.812 43.875 1
2 2015-07-15 16:43:55 48.937 55.812 43.875 1
3 2015-07-15 16:44:56 49.125 55.812 43.812 1
4 2015-07-15 16:45:55 49.312 55.812 43.812 1
Я хочу найти день с низкой Avg (TempBottom , TempTop), а затем получить все данные дня на минуте, так что я могу построить этот день, я попробовал:
df2 = df1.groupby(pd.TimeGrouper('D')).agg(min) \
.sort(['TempTop','TempBottom'], ascending=[True,True])
Который дает мне самые низкие дни температуры упорядоченным. образец:
SAMPLE_TIME Bottom Top Out state
2015-10-17 19.994 25.840 21.875 0
2015-08-29 26.182 28.777 25.937 0
2015-11-19 19.244 33.027 28.937 0
2015-11-07 19.744 33.527 28.125 0
тогда я, хотя это все что мне нужно, чтобы принять индекс первого элемента из df2:
df1[df2.index[1]]
Но я получаю сообщение об ошибке:
KeyError: Timestamp('2015-08-29 00:00:00')
Я попробовал ваш но теперь я получаю это вместо «KeyError:» метка [2015-11-04 00:00:00] не находится в [index] ' ' – InsaneBot
Однако это работает' df1.loc [' 2015-11- 04 '] 'проблема возникает в дополнительной точности (времени), которая включает ed в индексе – InsaneBot
Вам нужно сохранить свой индекс в 'df1' как дату или вы можете преобразовать его на сегодняшний день? Если вы можете преобразовать его на дату, тогда вы можете использовать 'df1.loc [df2.index [0] .date()]' –