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

如何跨索引比较两个DataFrame列,找出相同时间戳的行

解决两个DataFrame按时间戳匹配行的问题

你之前用df1.eq(df2)无效的原因是:这个方法是按索引位置逐行比较,只有同一索引位置的值完全一致才返回True,和值是否存在于另一个DataFrame无关,所以即使时间戳相同但索引不同,结果也会是False。

下面是两种实用的解决方法:

方法1:用isin筛选匹配行

直接筛选出当前DataFrame中时间戳存在于另一个DataFrame的所有行,适用于需要保留原DataFrame结构的场景:

示例代码

import pandas as pd

# 构造你的示例数据
df1 = pd.DataFrame({'ts': ['2000-01-01 00:00:00', '2000-01-02 00:00:00', '2000-01-03 00:00:00']})
df2 = pd.DataFrame({'ts': ['2000-01-02 00:00:00', '2000-01-03 00:00:00', '2000-01-04 00:00:00']})

# 从df1中筛选出df2也有的时间戳行
df1_matches = df1[df1['ts'].isin(df2['ts'])]
# 从df2中筛选出df1也有的时间戳行
df2_matches = df2[df2['ts'].isin(df1['ts'])]

输出结果

df1_matches:

ts
1  2000-01-02 00:00:00
2  2000-01-03 00:00:00

df2_matches:

ts
0  2000-01-02 00:00:00
1  2000-01-03 00:00:00

方法2:用merge做内连接

如果需要将两个DataFrame中匹配的行合并到一起,用内连接(how='inner')的merge方法,会自动匹配所有相同时间戳的行,不管索引位置:

示例代码

common_rows = pd.merge(df1, df2, on='ts', how='inner')

输出结果

ts
0  2000-01-02 00:00:00
1  2000-01-03 00:00:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:25:14