首页 > 解决方案 > 使用条件添加两个不同大小的df列

问题描述

我有两个不同大小的df。我必须在 df1 和 df2 中添加具有匹配 account_num 的loan_amnt 列,如果在 df2 中没有匹配的 account_num,则将其传递并粘贴来自 df1 的值。最后从结果中减去 df3。

第一个df1:

account_num loan_amnt   
124    1359467
125    2537290
126    9152838
127    7738935
129    4446699
130    1176879
131    2629022
132    7497333
143    4992738
144    3483429
148    1027315
149    3529133
150    3481139

第二个df2:

account_num loan_amnt
124    6334892
125    4384097
126    1110000
127    4110000
129    3344000
131    1171246
132    4326000
143    1100310
149    2843147

第三个df3

account_num loan_amnt
124    1360100
125    2119064
126    8600635
127    7749935
129    4767909
130    9088889
131    2631015
132    1003917
143    5413355
144    3446656
148    1027315
149    3749521
150    3266721

公式为:result_df = (df + df2) - df3

我尝试了各种方法,但没有得到预期的结果。

标签: pythonpandas

解决方案


使用 ifaccount_num是每个 DataFrame 使用和DataFrame.add参数的索引:DataFrame.subfill_value=0

result_df = df.add(df2, fill_value=0).sub(df3, fill_value=0)

如果列account_num首先创建索引:

result_df = (df.set_index('account_num')
               .add(df2.set_index('account_num'), fill_value=0)
               .sub(df3.set_index('account_num'), fill_value=0)
               .reset_index())

推荐阅读