如何对比两个DataFrame中同object的近似time差值(精度<0.01)
实现方法
核心思路是通过按object字段合并两个DataFrame,仅保留跨两个DataFrame的行配对(天然避免同一DataFrame内部行的对比),再筛选时间差符合要求的记录对并计算差值。
具体步骤
按
object合并两个DataFrame
使用pandas.merge的内连接,以object为关联键,只会保留两个DataFrame中都存在的object,且每一行配对都是来自第一个DataFrame和第二个DataFrame的组合,不会出现同一DataFrame内部行的关联。计算时间绝对差值
新增字段存储两个time列的绝对差值。筛选符合条件的记录
过滤出时间绝对差值小于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
相关产品推荐
相关产品推荐

