Pandas如何基于匹配的Strike Price列对两个DataFrame的Close值做减法
实现方法
核心思路是通过Pandas的merge方法按Strike Price列合并两个DataFrame,再对匹配到的Close列做减法,未匹配的位置自动返回NaN,完全符合需求。
完整代码示例
import pandas as pd # 请将下方df1、df2替换为你自己的两个DataFrame df1 = pd.DataFrame({ 'Strike Price': [29500, 30000, 30300, 30400, 30500], 'Close': [120, 90, 75, 60, 45] }) df2 = pd.DataFrame({ 'Strike Price': [29500, 30300, 30400], 'Close': [80, 50, 30] }) # 按Strike Price列合并,保留df1所有行,给重名的Close列加后缀区分 merged = pd.merge(df1, df2, on='Strike Price', how='left', suffixes=('_1', '_2')) # 计算差值,未匹配的位置自动返回NaN merged['Close_diff'] = merged['Close_1'] - merged['Close_2']
参数说明
- 如果你需要保留两个DataFrame的所有Strike Price取值,将merge方法的
how参数改为'outer'即可 suffixes参数用于给两个重名的Close列加后缀,避免合并时列名冲突,你可以根据自己的需求修改后缀内容
内容的提问来源于stack exchange,提问作者Krishna Gupta
相关产品推荐
相关产品推荐

