You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何过滤DataFrame行以保留与另一DataFrame共有的日期记录

Pandas 按共有日期过滤DataFrame行

要过滤掉df1里不在df2日期列中的行,实现日期维度对齐,直接用成员判断做布尔索引即可,操作前先统一两表日期列的格式,避免类型不匹配导致筛选错误。

推荐实现方法

第一步先把两个表的日期列统一转为datetime类型,避免字符串格式、时间精度不一致的问题:

import pandas as pd

df1['Date'] = pd.to_datetime(df1['Date'])
df2['Date'] = pd.to_datetime(df2['Date'])

第二步用isin()方法筛选df1中日期存在于df2日期列的行:

df1_filtered = df1[df1['Date'].isin(df2['Date'])].reset_index(drop=True)

执行后得到的结果和预期完全一致:

DateValue
2014-09-191
2014-09-222
2014-09-231

可选替代方案

如果后续需要关联两表的其他字段,也可以用内连接的方式实现相同的过滤效果,仅保留共有日期的行:

# 只取df2的日期列做关联,避免带入df2的其他字段
df1_filtered = df1.merge(df2[['Date']], on='Date', how='inner')

注意:如果日期列带有时分秒信息,需要先将两表日期统一截断到日粒度再匹配,否则会因时分秒差异被判定为不匹配,截断操作可使用df['Date'] = df['Date'].dt.date或者df['Date'] = df['Date'].dt.normalize()完成。

内容的提问来源于stack exchange,提问作者tmrgn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 02:48:32