python - Pandas 按日期过滤数据帧,格式不同
问题描述
因此,我将 csv 文件加载到 pandas 数据框中,没有任何问题。
df = pd.read_csv(filename,na_values=[""])
csv 中有一个名为 date_GMT 的列,其日期格式为 2017 年 6 月 29 日 - 下午 2:00。问题是当我进行比较以过滤掉示例时,它将此值视为字符串。我如何将其视为约会。
df=df[(df['date_GMT'] < datetime.date(year=2017,month=8,day=25))]
我尝试了这个不起作用,因为它无法比较字符串和日期。
解决方案
在比较之前转换为datetime
:
df = pd.DataFrame({'col': ['Jun 29 2017 - 2:00pm', 'Sep 2 2018 - 4:00pm',
'Jan 15 2017 - 6:00am', 'Mar 29 2018 - 11:00pm']})
df['col'] = pd.to_datetime(df['col'])
print(df.loc[df['col'] < '2017-08-25'])
col
0 2017-06-29 14:00:00
2 2017-01-15 06:00:00
更好的是,您可以datetime
在阅读文件时指定列:
df = pd.read_csv(filename, parse_dates=['date_GMT'])