比较dataFrame和日期格式的问题

问题描述 投票:1回答:1

我有一个列组成的数据序列,我想提取 "dateRep "是一个日期 "x "的上级的行。

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

但我总是得到一些日期 谁是不如 "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
python pandas date datetime compare
1个回答
1
投票

默认情况下。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").

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.