J'ai un Pandas DataFrame avec un DatetimeIndex et une colonne MSE Loss
l'index est formaté comme suit:
DatetimeIndex(['2015-07-16 07:14:41', '2015-07-16 07:14:48',
'2015-07-16 07:14:54', '2015-07-16 07:15:01',
'2015-07-16 07:15:07', '2015-07-16 07:15:14',...]
Cela comprend plusieurs jours.
Je veux sélectionner toutes les lignes (toutes les heures) d'un jour particulier sans connaître spécifiquement les intervalles de temps réels. Par exemple: Entre 2015-07-16 07:00:00
et 2015-07-16 23:00:00
J'ai essayé l'approche décrite ici: ici
Mais df[date_from:date_to]
les sorties:
KeyError: Timestamp('2015-07-16 07:00:00')
Il veut donc des indices exacts. De plus, je n'ai pas de colonne date
. Seul un index avec les dates.
Quelle est la meilleure façon de sélectionner une journée entière en fournissant simplement une date 2015-07-16
et comment puis-je sélectionner une plage horaire spécifique au cours d'une journée particulière?
Option 1:
Exemple df:
df
a
2015-07-16 07:14:41 12
2015-07-16 07:14:48 34
2015-07-16 07:14:54 65
2015-07-16 07:15:01 34
2015-07-16 07:15:07 23
2015-07-16 07:15:14 1
On dirait que vous essayez ceci sans .loc
(ne fonctionnera pas sans):
df.loc['2015-07-16 07:00:00':'2015-07-16 23:00:00']
a
2015-07-16 07:14:41 12
2015-07-16 07:14:48 34
2015-07-16 07:14:54 65
2015-07-16 07:15:01 34
2015-07-16 07:15:07 23
2015-07-16 07:15:14 1
Option 2:
Vous pouvez utiliser l'indexation booléenne sur l'index:
df[(df.index.get_level_values(0) >= '2015-07-16 07:00:00') & (df.index.get_level_values(0) <= '2015-07-16 23:00:00')]
Vous pouvez utiliser truncate
:
begin = pd.Timestamp('2015-07-16 07:00:00')
end = pd.Timestamp('2015-07-16 23:00:00')
df.truncate(before=begin, after=end)