如何对Pandas两个不同DataFrame做行相减并替换原数值
你可以通过pandas的布尔索引+loc定位的方式直接修改目标行数值,核心实现逻辑如下:
核心代码
df1.loc[df1['BankName'] == 'Bank1', ['Value1', 'Value2']] -= df2.iloc[0].values
完整可运行示例
import pandas as pd # 构建df1 data = [['Bank1', 10, 55], ['Bank2', 15,65], ['Bank3', 14,54]] df1 = pd.DataFrame(data, columns = ['BankName', 'Value1','Value2']) # 构建df2 df2 = pd.DataFrame([[3, 2]], columns = ['Value1','Value2']) # 执行修改 df1.loc[df1['BankName'] == 'Bank1', ['Value1', 'Value2']] -= df2.iloc[0].values # 输出结果 print(df1)
运行输出
BankName Value1 Value2 0 Bank1 7 53 1 Bank2 15 65 2 Bank3 14 54
逻辑说明
- 用
df1['BankName'] == 'Bank1'筛选出Bank1对应的行 - 显式指定需要修改的
Value1、Value2两列 - 取出df2第一行的数值做广播减法,直接赋值回原位置完成修改
内容的提问来源于stack exchange,提问作者Jiamei
相关产品推荐
相关产品推荐

