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

如何按相同Trip_ID对两个DataFrame的Time值计算差值?

嘿,我来帮你搞定这个DataFrame的时间差计算需求!核心思路很简单:先让两个表基于Trip_ID精准配对,再计算对应Time的差值就行。下面是两种实用的实现方法,都是用pandas来做的:

方法1:用merge关联(推荐,适配绝大多数场景)

这是最直观也最稳妥的方式,不管两个表的行顺序怎么乱,都能精准匹配Trip_ID:

import pandas as pd

# 先模拟你给的示例数据
df1 = pd.DataFrame({'Time': [15, 20, 25], 'Trip_ID': ['X', 'Y', 'Z']})
df2 = pd.DataFrame({'Time': [35, 40, 65], 'Trip_ID': ['Z', 'Y', 'X']})

# 按Trip_ID合并两个表,用后缀区分来自不同表的Time列
merged = pd.merge(df1, df2, on='Trip_ID', suffixes=('_from_df1', '_from_df2'))

# 计算差值并转成列表
time_diffs = (merged['Time_from_df2'] - merged['Time_from_df1']).tolist()

print(time_diffs)  # 输出就是你要的 [50, 20, 10]

为啥推荐这个?

  • merge会自动处理两个表的行顺序差异,不管df2里的Trip_ID怎么排,都能和df1的对应上
  • 后缀参数避免了列名重复的问题,可读性拉满
  • 就算以后Trip_ID有重复(只要业务允许),也能正确匹配所有对应行
方法2:设索引直接计算(适合Trip_ID唯一的场景)

如果你的Trip_ID在两个表里都是唯一值,没有重复项,那可以用这个更简洁的写法:

# 把Trip_ID设为两个表的索引
df1_idx = df1.set_index('Trip_ID')
df2_idx = df2.set_index('Trip_ID')

# 直接按索引对齐做减法,再转列表
time_diffs = (df2_idx['Time'] - df1_idx['Time']).tolist()

print(time_diffs)  # 同样输出 [50, 20, 10]

注意事项

  • 这个方法只适合Trip_ID完全唯一的情况,如果有重复索引,计算会出问题
  • 结果列表的顺序和df1里的Trip_ID顺序一致,完美匹配你的预期

两种方法都能得到你要的差值列表,选哪种看你实际的数据情况就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:50:01