pandas - 在 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
我不明白,我该怎么做?请帮我解决这个问题。
解决方案
我们可以从使用 a合并df_1
和ondf_2
的匹配值开始:df_1
strike_price
left
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_1
并close_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
推荐阅读
- monetdb - 如何为 Ubuntu 1604 构建 MonetDB 的 .deb 包和为 OpenSUSE 构建的 .rpm 包?
- javascript - 尝试在 vscode 上调试 javascript 时出错
- r - r 按 ID 将值从一个数据集传输到另一个数据集
- c# - 用鼠标拖动弹出窗口
- node.js - Express 子路由路由器,无需在每个路由中使用完整路径
- javascript - Firebase Chrome 扩展程序生成错误
- javascript - Tableau:使用 window.top.location.href 和 document.referrer 调用动态 URL
- sql - 选择不同的 Vals
- css - 样式:如何覆盖活动元素上的primeng tabmenu边框颜色
- julia - 推入两个数组时,Julia 卡住了