首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas数据帧中行级别的算术运算

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

Stack Overflow用户
提问于 2020-11-05 01:47:06
回答 1查看 42关注 0票数 0

我有一个如下的数据框架:

代码语言:javascript
复制
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 row永远不会被提及。我希望保持数据帧的相同结构,因为它必须通过进一步的代码。

那么如何使用公式Others = Global - Argentina - Venice在表中创建一个单独的其他行呢

预期的数据帧:

代码语言:javascript
复制
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语句,但考虑到所有的编码,我不确定这是否是一种好方法

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-05 04:12:44

试试这个

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64685175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档