返回

如何基于Python数据帧中一列的不同值计算公式

发布时间:2022-07-18 13:57:05 203
# node.js

我有一个数据框,我想评估一个公式,比如 result = 2*apple - melon - orange按 testid 分组。

我的df如下

df = pd.DataFrame({'testid':(1,2,1,2,1,2),'Name':('apple','apple','melon','melon','orange','orange'), 'A': (1,2,10,20,5,5), 'B': (1,5,4,2,3,1)})

testid Name A B
1 apple 1 1
2 apple 2 5
1 melon 10 4
2 melon 20 2
1 orange 5 3
2 orange 5 1

我希望我的结果与每个 testid 的列 A 和 B 一样,做apple * 2 -  melon - orange. 然后保存到新列 result_A 和 result_B,按 testid 分组

testid result_A result_B
1 -13 -5
2 -20 7

哪个函数可以得到这个结果?

我尝试使用 df.eval() 之类的

eq = 'df[df.Name==\'apple\',[\'A\',\'B\']] *2 - df[df.Name==\'melon\',[\'A\',\'B\']] - df[df.Name==\'orange\',[\'A\',\'B\']]'

df.eval(eq)

但它告诉我

UndefinedVariableError: name 'df' is not defined

我意识到我应该使用 pd.eval(engine='python') 而不是 df.eval() 现在的问题是 df 的不同子集返回不同的索引,导致它们不能加或减

df[df.Name=='apple'][['A','B']]*2

这给了我

  A B
0 2 2
1 4 10

然而

df[df.Name=='melon'][['A','B']]

这给了我

     
2 10 4
3 20 2

所以他们不能一起加或减,因为索引不匹配

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像