pandas 数据帧中行级别的算术运算

Arithmetic operations on row level in pandas dataframe

我有如下数据框:

df:
    Heir_1      Heir_2          Amount_1        Amount_2
0   New         Argentina       251823845.90    225432949.80
1   New         Venice          219982836.00    183705325.60
2   New         Denmark         419848669.41    546624742.50
3   New         Russia          218120340.46    151480060.80
4   New         Global          4706066755.41   4432657926.66

这里的概念是全局总是 ArgentinaVeniceOthers 的总和。但是 Others 行永远不会被提及。我想保持相同的数据帧结构,因为它必须经过进一步的代码。

那么我如何使用以下公式在 table 中创建单独的一行 Others:Others = Global - Argentina - Venice

预期数据帧:

df:
    Heir_1      Heir_2          Amount_1        Amount_2
0   New         Argentina       251823845.90    225432949.80
1   New         Venice          219982836.00    183705325.60
2   New         Denmark         419848669.41    546624742.50
3   New         Russia          218120340.46    151480060.80
4   New         Global          4706066755.41   4432657926.66
5   New         Others          4234260073.51   4023519651.25

相关问题:

还有一个问题,没有必要在所有场景中都出现所有这 3 行。可能有一天 Argentina 不存在,或者 Venice 不存在,或者 Global 不存在。

本例中有 3^3 种可能的情景。我可以在这种情况下使用 if 语句,但不确定考虑到所有编码

这是否是一个好方法

试试这个

if df[df['Heir_2']=='Global'].shape[0]:
  df_special = df[df['animal'].isin(['Argentina','Venecia'])].sum()
  amount_1 = df[df['Heir_2']=='Global']['Amount_1'] - df_special['Amount_1']
  amount_2 = df[df['Heir_2']=='Global']['Amount_2'] - df_special['Amount_2']
  df.append({'Heir_1':'New','Heir_2':'Others','Amount_1':amount_1,'Amount_2':amount_2},ignore_index=True)