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

如何基于唯一ID对比两个DataFrame的值并计算分钟级时间差?

解决方案:基于ID匹配DataFrame并计算时间差

没问题,我来帮你搞定这个需求!咱们一步步来实现基于唯一ID(ID列)匹配两个DataFrame,计算精确分钟级时间差,同时整理出需要的ST、ST2、ST3列。

步骤1:准备环境与构造示例数据

首先确保你已经安装了pandas,然后我们先把你给出的两个DataFrame用代码构造出来(补全了你未写完的DF_2内容):

import pandas as pd

# 构造DF_1
df1 = pd.DataFrame({
    'ID': ['AB-55', 'AB-78', 'AB-48'],
    'Date': ['2017-01-04 18:25:14', '2017-01-08 08:48:14', '2017-01-09 21:25:45'],
    'Val1': ['adj.f@f', 'arj.t@y', 'edR.u@t'],
    'Val2': ['ad2er', 'ar8ey', 'wu5eu'],
    'Val3': [25, 258, 75]
})

# 构造DF_2(补全缺失的列内容)
df2 = pd.DataFrame({
    'ID': ['AB-55', 'AB-78', 'AB-48'],
    'Date': ['2017-01-04 18:30:14', '2017-01-08 08:45:14', '2017-01-09 21:30:45'],
    'Val1': ['adj.f@f', 'arj.t@y', 'edR.u@t'],
    'Val2': ['ad2er', 'ar8ey', 'wu5eu'],
    'Val3': [25, 258, 75]
})

步骤2:转换时间列为datetime类型

要计算时间差,必须先把Date列转换成pandas的datetime格式:

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

步骤3:基于ID合并两个DataFrame

我们通过ID列把两个DataFrame合并,用后缀区分来自不同DF的列:

merged_df = pd.merge(df2, df1, on='ID', suffixes=('_df2', '_df1'))

步骤4:计算精确的分钟级时间差

用两个时间列的差值,转换成总秒数后除以60,得到精确到小数的分钟差:

# 计算DF_2与DF_1的时间差,单位为分钟
merged_df['Dif'] = (merged_df['Date_df2'] - merged_df['Date_df1']).dt.total_seconds() / 60
  • 如果需要整数分钟,可以追加.round(0)或者.astype(int)来取整。
  • 注意:如果时间差为负,说明DF_2的时间早于DF_1的时间。

步骤5:整理输出列

把DF_1的Val1、Val2、Val3重命名为ST、ST2、ST3,并筛选出需要的列:

output_df = merged_df.rename(columns={
    'Val1_df1': 'ST',
    'Val2_df1': 'ST2',
    'Val3_df1': 'ST3'
})[['ID', 'Date_df2', 'Val1_df2', 'Val2_df2', 'Val3_df2', 'ST', 'ST2', 'ST3', 'Dif']]

最终输出结果

执行完上述代码后,output_df的内容如下:

IDDate_df2Val1_df2Val2_df2Val3_df2STST2ST3Dif
AB-552017-01-04 18:30:14adj.f@fad2er25adj.f@fad2er255.0
AB-782017-01-08 08:45:14arj.t@yar8ey258arj.t@yar8ey258-3.0
AB-482017-01-09 21:30:45edR.u@twu5eu75edR.u@twu5eu755.0

额外说明

  • 如果你的DF_2有更多Val...列,只需要在重命名时对应添加ValX_df1: 'STX'即可。
  • 如果不需要保留DF_2的Val列,可以在筛选输出列时去掉它们。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:21:49