我有这张桌子
well MRPW1 MRPW2 MRPW3 MRPW4 MRPW5 MRPW6 MRPW7 MRPW8 MRPW9 MRPW10 MRPW11 MRPW12
well1 NaN NaN NaN 0.115293 76.652246 67.545672 47.503333 56.198555 47.008101 44.703443 NaN NaN
well2 NaN NaN NaN NaN 112.594625 79.635218 54.754644 72.015028 82.042539 72.871044 NaN NaN
well3 NaN NaN NaN NaN NaN NaN 1.607063 89.893566 90.315224 85.814613 NaN NaN
我使用了这段代码。我需要遍历每一行的值,并产生一个分配给新列的数字。 总和只是这里的一个例子,但我想对此循环进行另一次计算。这是我想在这里实现的循环。
df=df.fillna(0)
def calcMRPW(row):
sum=0
for x in row:
#sum is only an example. what I really need is to loop through the row values.
sum=x+sum
return sum
df["sum"]=df.loc[:,"MRPW1":"MRPW10"].apply(calcMRPW)
print(df.head())
这是结果
well MRPW1 MRPW2 MRPW3 MRPW4 MRPW5 MRPW6 MRPW7 MRPW8 MRPW9 MRPW10 MRPW11 MRPW12 sum
well1 0.000000 0.000000 0.000000 0.115293 76.652246 67.545672 47.503333 56.198555 47.008101 44.703443 0.0 0.0 NaN
well2 0.000000 0.000000 0.000000 0.000000 112.594625 79.635218 54.754644 72.015028 82.042539 72.871044 0.0 0.0 NaN
well3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.607063 89.893566 90.315224 85.814613 0.0 0.0 NaN
该函数的乘积为NaN
。我该如何工作?
答案 0 :(得分:1)
如果要遍历一行,则需要添加axis=1
:
df['sum'] = df.loc[:,"MRPW1":"MRPW10"].apply(calcMRPW,axis=1)