2 votes

Comment utiliser .loc pour filtrer sur la base de champs de date ?

J'ai récemment commencé à jouer avec Python et j'ai été bloqué par un problème lié à Pandas (en particulier .loc) depuis un certain temps. En gros, j'essaie de manipuler le dataframe de manière à ce qu'il ne conserve que certaines plages de dates.

Lorsque je filtre pour une date spécifique, la commande fonctionne parfaitement, mais dès que je passe à une plage, elle ne fonctionne pas. De même, tout autre type de variable fonctionne correctement - je suis surpris car les gens doivent avoir à filtrer pour des dates tout le temps. Dois-je transformer la date ?

# this works perfectly fine
raw_data.loc[raw_data['date_field'] == '2019-06-20', 'id':'date_field']

# this does not
raw_data.loc[raw_data['date_field'] >= '2019-06-20', 'id':'date_field']

J'obtiens une erreur de type :

TypeError Traceback (dernier appel le plus récent)

J'ai essayé toutes sortes de transformations différentes du champ date, mais j'obtiens toujours la même erreur. Est-il possible de filtrer les dates en utilisant .loc ?

1voto

jezrael Points 290608

Je pense qu'il est nécessaire de convertir les colonnes en dates par to_datetime :

raw_data['date_field'] = pd.to_datetime(raw_data['date_field'])
raw_data.loc[raw_data['date_field'] >= '2019-06-20', 'id':'date_field']

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X