如何根据精确匹配的日期值筛选pandas数据帧

2024-04-26 07:35:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试筛选特定日期的数据框,虽然数据框中存在该日期,但它不返回任何结果

基于查询的数据帧数据

df[df['Date'] > '2017-03-20']

返回此结果

StaffID     Date        
90047   2017-03-20 19:00:00     
90049   2017-03-20 19:00:00     
90049   2017-03-27 19:00:00     

尽管当我运行此查询时

df[df['Date'] == '2017-03-20']

或者

df.loc[df['Date'] == '2017-03-20']

它只返回一个空的数据帧

StaffID     Date

我的数据帧列类型是

StaffID                int64
Date          datetime64[ns]

我已经尝试了上述查询,方法是比较数据帧日期和字符串,并将字符串日期转换为日期时间64[ns]仍然是相同的结果,请提供帮助


Tags: 数据方法字符串类型dfdate时间loc
3条回答

你可以做字符串比较

df[df['Date'].astype(str).str[:10] == '2017-03-20']


    StaffID Date
0   90047   2017-03-20 19:00:00
1   90049   2017-03-20 19:00:00

使用dt.date astype string,然后比较

df[df['Date'].dt.date.astype(str) == '2017-03-20']

输出:

  StaffID                Date
0    90047 2017-03-20 19:00:00
1    90049 2017-03-20 19:00:00

我使用的日期是'2017-03-20 19:00:00',比'2017-03-20 00:00:00'的日期要短,这就是为什么没有比较正确的最佳方法是

df.Date = df.Date.dt.date
dateToMatch = np.datetime64('2017-03-20')
df[df.Date == dateToMath]

以上代码返回

   StaffID     Date
0   90047   2017-03-20
1   90049   2017-03-20

这将只从“我的日期”列中提取日期并替换有时间的旧列

功劳:文在评论中回答了我。

相关问题 更多 >