首页 > 解决方案 > 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))]

我尝试了这个不起作用,因为它无法比较字符串和日期。

标签: pythonpandascsvdatedataframe

解决方案


在比较之前转换为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'])

推荐阅读