我有一个列组成的数据序列,我想提取 "dateRep "是一个日期 "x "的上级的行。
x= datetime.datetime(2020,3,25)
save_df=df[(df["countriesAndTerritories"]=="Algeria") & (to_datetime(df["dateRep"])> x)]
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
默认情况下。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")
.