在pandas中计算Sensor ID顺序不匹配的两个DataFrame差值的最优方法
最优实现方案
利用Pandas原生的索引自动对齐特性是最优解法,无需手动排序、匹配ID,时间复杂度是Pandas底层优化过的O(n)级别,代码也最简洁:
- 先将两个DataFrame的
Sensor ID字段设为索引,触发自动对齐规则 - 直接对两个设置好索引的DataFrame做减法,Pandas会自动匹配相同Sensor ID的行计算数值差
- 最后可根据需要重置索引,将
Sensor ID变回普通列,并重命名列区分差值含义
import pandas as pd # 1. 设置索引,按Sensor ID对齐 df1 = df1.set_index("Sensor ID") df2 = df2.set_index("Sensor ID") # 2. 直接相减,自动匹配相同ID的行计算差值 diff_df = df2 - df1 # 3. 可选:重置索引,重命名列明确差值定义(此处为DF2减DF1的结果) diff_df = diff_df.reset_index().rename(columns={ "Reference Pressure": "Reference Pressure Diff (DF2-DF1)", "Sensor Pressure": "Sensor Pressure Diff (DF2-DF1)" })
特殊场景兼容:如果两个DataFrame存在各自独有的Sensor ID,可指定填充值避免出现空值,示例如下:
# 独有ID的缺失读数默认按0计算差值,也可根据业务需求修改fill_value的取值 diff_df = df2.sub(df1, fill_value=0).reset_index()
内容的提问来源于stack exchange,提问作者OP
相关产品推荐
相关产品推荐

