如何计算两个相同维度pandas DataFrame的差值
两个同维度pandas DataFrame差值计算方案
核心逻辑为保留非数值列原值,仅对数值类型列做对应位置的减法计算,完整可运行代码如下:
import pandas as pd # 示例输入数据 df1 = pd.DataFrame({ 'x': ['a', 'b', 'c', 'd', 'e'], 'y': [1, 1, 1, 1, 1], 'z': [2, 2, 2, 2, 2]}) df2 = pd.DataFrame({ 'x': ['a', 'b', 'c', 'd', 'e'], 'y': [1, 1, 1, 1, 1], 'z': [3, 3, 3, 3, 3]}) # 差值计算 delta_df = df1.copy() # 筛选所有数值类型列 numeric_cols = df1.select_dtypes(include='number').columns # 数值列做减法,当前为df2减df1,需反向差值可交换左右操作数 delta_df[numeric_cols] = df2[numeric_cols] - df1[numeric_cols] print(delta_df)
运行后输出结果和预期一致:
x y z 0 a 0 1 1 b 0 1 2 c 0 1 3 d 0 1 4 e 0 1
可选校验逻辑
如果需要提前确认两个DataFrame的非数值列完全一致,可在计算前增加校验代码:
assert df1.select_dtypes(exclude='number').equals(df2.select_dtypes(exclude='number')), "两个DataFrame的非数值列内容不一致"
内容的提问来源于stack exchange,提问作者user6018651
相关产品推荐
相关产品推荐

