I have a pandas dataframe like this:
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']
,如果我将其替换为数字,则代码可以正常工作。但我不知道如何解决这个问题。感谢任何建议。