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

如何对比两个DataFrame中同object的近似time差值(精度<0.01)

实现方法

核心思路是通过按object字段合并两个DataFrame,仅保留跨两个DataFrame的行配对(天然避免同一DataFrame内部行的对比),再筛选时间差符合要求的记录对并计算差值。

具体步骤

  1. 按object合并两个DataFrame
    使用pandas.merge的内连接,以object为关联键,只会保留两个DataFrame中都存在的object,且每一行配对都是来自第一个DataFrame和第二个DataFrame的组合,不会出现同一DataFrame内部行的关联。

  2. 计算时间绝对差值
    新增字段存储两个time列的绝对差值。

  3. 筛选符合条件的记录
    过滤出时间绝对差值小于0.01的行,得到目标结果。

代码示例

import pandas as pd

# 构造示例数据
df1 = pd.DataFrame({
    'object': ['A', 'A', 'B', 'C'],
    'time': [1.23, 1.25, 3.45, 5.67]
})

df2 = pd.DataFrame({
    'object': ['A', 'B', 'B', 'D'],
    'time': [1.24, 3.44, 3.46, 7.89]
})

# 按object合并,保留跨DF的配对
merged_df = pd.merge(df1, df2, on='object', suffixes=('_df1', '_df2'))

# 计算时间绝对差值
merged_df['time_diff'] = abs(merged_df['time_df1'] - merged_df['time_df2'])

# 筛选差值小于0.01的记录
result = merged_df[merged_df['time_diff'] < 0.01]

# 输出指定格式的结果
print(result[['object', 'time_df1', 'time_df2', 'time_diff']])

关键说明

  • 使用suffixes参数区分两个DataFrame的time列,避免列名冲突。
  • 内连接(默认how='inner')确保只处理两个DataFrame共有的object,若需保留某一方所有object,可改为左/右连接并额外处理空值。
  • 若数据量极大,可先按object分组再配对优化效率,上述方法在多数场景下简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:57:27