问题描述
我有一个这样的熊猫数据框:
df = pd.DataFrame({'A': [2,3],'B': [1,2],'C': [0,1],'D': [1,0],'total': [4,6]})
A B C D total
0 2 1 0 1 4
1 3 2 1 0 6
我正在尝试执行逐行计算并使用结果创建新列。计算方法是将每一列ABCD除以总数,将其平方,然后逐行求和。这应该是结果(如果总数为0,则为0):
A B C D total result
0 2 1 0 1 4 0.375
1 3 2 1 0 6 0.389
这是我到目前为止尝试过的方法,但它始终返回0:
df['result'] = df[['A','B','C','D']].apply(lambda x: ((x/df['total'])**2).sum(),axis=1)
我猜想问题出在lambda函数中的df['total']
上,因为如果我将其替换为一个数字,它将很好地工作。我不知道该如何解决。感谢任何建议。