根据一个公共列从两个数据框中减去列

时间:2020-04-03 06:12:17

标签: python pandas dataframe

df1:

  1. 亚洲34
  2. 美国74
  3. 澳大利亚92
  4. 非洲44

df2:

  1. 亚洲24
  2. 澳大利亚90
  3. 非洲30

我希望df1-df2的输出为

  1. 亚洲10
  2. 美国74
  3. 澳大利亚2
  4. 非洲14

我为此感到困扰,我是熊猫的新手。请帮忙。

1 个答案:

答案 0 :(得分:1)

Series.subSeries.map映射的第二Series一起使用:

df1['B'] = df1['B'].sub(df1['A'].map(df2.set_index('A')['B']), fill_value=0)
print (df1)
           A     B
0       Asia  10.0
1    America  74.0
2  Australia   2.0
3     Africa  14.0

如果可能的话,改变第一列的顺序,将DataFrame.set_index的两个第一列都转换为索引,然后减去:

df2 = df1.set_index('A')['B'].sub(df2.set_index('A')['B'], fill_value=0).reset_index()
print (df2)
           A     B
0     Africa  14.0
1    America  74.0
2       Asia  10.0
3  Australia   2.0