Python如何实现行列名完全不同的两个DataFrame指定列相减
Python实现方案
我们可以基于pandas库完成该需求,推荐优先按windcodes字段关联计算,避免两个DataFrame行顺序不一致导致计算错误:
前置依赖
需要先导入pandas库:
import pandas as pd
推荐实现步骤
- 按公共列
windcodes将两个DataFrame左连接,保证DataFrame1的数据全部保留 - 新增
yield-CALC列,取值为yield列减CALC列的结果 - 筛选保留原DataFrame1的所有列和新增列,得到最终DataFrame3
示例代码
# 两个表按windcodes关联 merge_df = pd.merge(DataFrame1, DataFrame2, on='windcodes', how='left') # 计算差值列 merge_df['yield-CALC'] = merge_df['yield'] - merge_df['CALC'] # 筛选列得到结果 DataFrame3 = merge_df[['windcodes', 'name', 'yield', 'perp', 'yield-CALC']].copy()
简化方案(仅当两表行顺序完全匹配时可用)
如果你已经确认两个DataFrame的行完全对应、windcodes顺序没有错位,也可以直接按行相减:
DataFrame3 = DataFrame1.copy() DataFrame3['yield-CALC'] = DataFrame3['yield'] - DataFrame2['CALC']
注意事项
如果yield或者CALC列是字符串格式,需要先转换为数值格式再计算,可以用pd.to_numeric()方法处理。
内容的提问来源于stack exchange,提问作者Danyu Li
相关产品推荐
相关产品推荐

