проблема при сравнении dataFrame с форматом даты - PullRequest
1 голос
/ 27 апреля 2020

у меня есть ser ie данных, состоящих из столбцов, и я хочу извлечь строки, где «dateRep» является супервизором одной даты «x»

x= datetime.datetime(2020,3,25)
save_df=df[(df["countriesAndTerritories"]=="Algeria") & (to_datetime(df["dateRep"])> x)]

, но у меня всегда есть какая-то дата, которая уступает "Х" enter image description here

enter image description here

177 06/04/2020  6   4   2020    69  22  Algeria DZ  DZA 42228429.0  Africa
178 05/04/2020  5   4   2020    80  25  Algeria DZ  DZA 42228429.0  Africa
179 04/04/2020  4   4   2020    185 42  Algeria DZ  DZA 42228429.0  Africa
183 31/03/2020  31  3   2020    73  4   Algeria DZ  DZA 42228429.0  Africa
184 30/03/2020  30  3   2020    57  2   Algeria DZ  DZA 42228429.0  Africa
185 29/03/2020  29  3   2020    45  3   Algeria DZ  DZA 42228429.0  Africa
186 28/03/2020  28  3   2020    42  1   Algeria DZ  DZA 42228429.0  Africa
187 27/03/2020  27  3   2020    65  4   Algeria DZ  DZA 42228429.0  Africa
188 26/03/2020  26  3   2020    38  2   Algeria DZ  DZA 42228429.0  Africa
202 12/03/2020  12  3   2020    0   0   Algeria DZ  DZA 42228429.0  Africa
203 09/03/2020  9   3   2020    3   0   Algeria DZ  DZA 42228429.0  Africa
204 06/03/2020  6   3   2020    5   0   Algeria DZ  DZA 42228429.0  Africa
205 05/03/2020  5   3   2020    7   0   Algeria DZ  DZA 42228429.0  Africa
206 04/03/2020  4   3   2020    2   0   Algeria DZ  DZA 42228429.0  Africa
226 12/02/2020  12  2   2020    0   0   Algeria DZ  DZA 42228429.0  Africa

1 Ответ

1 голос
/ 27 апреля 2020

по умолчанию, pd.to_datetime будет интерпретировать и анализировать, например, строку 04/03/2020 как месяц / день / год ( см. Документы ). Однако в вашем случае вы, похоже, используете день / месяц / год в качестве формата ввода, поэтому вам нужно установить для ключевого слова dayfirst значение True. Пример:

from datetime import datetime
import pandas as pd

x = datetime(2020, 3, 25)

df = pd.DataFrame({'dateRep': ['04/03/2020', '01/04/2020', '13/06/2019', '05/04/2020'],
                   'countriesAndTerritories': ['Algeria', 'Algeria', 'tmp', 'tmp'],
                   'v': [0, 1, 0, 0]})

df[(df["countriesAndTerritories"]=="Algeria") & (pd.to_datetime(df["dateRep"], dayfirst=True) > x)]

#       dateRep countriesAndTerritories  v
# 1  01/04/2020                 Algeria  1

, если вы опустите ключевое слово, результаты будут недействительными:

df[(df["countriesAndTerritories"]=="Algeria") & (pd.to_datetime(df["dateRep"]) > x)]
#       dateRep countriesAndTerritories  v
# 0  04/03/2020                 Algeria  0

Последнее замечание: если вы хотите быть в безопасности, укажите формат даты (времени) ) явно, например, в pd.to_datetime(df["dateRep"], format="%d/%m/%Y").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...