这是我的 pandas df:
Id Protein A_Egg B_Meat C_Milk Category
A 10 10 20 0 egg
B 20 10 0 10 milk
C 20 10 10 10 meat
D 25 20 10 0 egg
我希望根据“类别”将蛋白质列与其他列合并
我的输出是
Id Protein_final
A 20
B 30
C 30
D 45
理想情况下,我想展示我是如何接近的,但是,坦率地说,我一无所知!!
编辑:另外,如何处理类别为空白或符合其中一列(其中最终值应与蛋白质列中的初始值相同)
最佳答案
使用DataFrame.lookup
通过一些预处理,删除 _
之前的列名称和小写字母,最后添加到列:
arr = df.rename(columns=lambda x: x.split('_')[-1].lower()).lookup(df.index, df['Category'])
df['Protein'] += arr
print (df)
Id Protein A_Egg B_Meat C_Milk Category
0 A 20 10 20 0 egg
1 B 30 10 0 10 milk
2 C 30 10 10 10 meat
3 D 45 20 10 0 egg
如果最终只需要 2 列:
df = df[['Id','Protein']]
关于Pandas 列根据条件合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63052917/