首页 > 解决方案 > 在 Pandas 中:如何根据包含相同值的其他两个数据帧相同的列减去两个数据帧值

问题描述

我有两个数据框 - 第一个数据集是 -

在此处输入图像描述

第二个数据集是 -

在此处输入图像描述

在两个数据集中都有相同的列,但我想根据 Strike Price 列减去值,如果两个数据集 Strick_price 匹配,则减去这些 Close 值。

Example - 
Dataset1   dataset2      Close
29500      29500         Close - Close
30000      Not Match     Nan
30300      30300         Close - Close
30400      30400         Close - Close
30500      Not Match     Nan

我不明白,我该怎么做?请帮我解决这个问题。

标签: pandasdataframe

解决方案


我们可以从使用 a合并df_1和ondf_2的匹配值开始:df_1strike_priceleft merge

>>> df = pd.merge(df_1[['strike_price', 'close']],
...               df_2[['strike_price', 'close']],
...               how='left',
...               left_on=['strike_price'],
...               right_on=['strike_price'],
...               suffixes=['_df_1',
...                         '_df_2'])
>>> df
    strike_price    close_df_1  close_df_2
0   30000           3131.20     3000.0
1   30300           2836.30     NaN
2   30400           2736.95     2744.0
3   30500           2630.00     2800.0
4   30600           2530.60     2650.6

然后,我们可以构建一个diff减去列的列close_df_1close_df_2得到预期的结果:

>>> df['diff'] = df['close_df_1'] - df['close_df_2']
>>> df
    strike_price    close_df_1  close_df_2  diff
0   30000           3131.20     3000.0      131.20
1   30300           2836.30     NaN         NaN
2   30400           2736.95     2744.0      -7.05
3   30500           2630.00     2800.0      -170.00
4   30600           2530.60     2650.6      -120.00

推荐阅读