想要乘以一行的每个元素,然后为dataFrame的每一行添加新的结果列。
我能够从dataFrame中提取每一行。
df_temp.values[0,:]
array([18, 10, 5, 11, -2], dtype=int64)
但是之后无法继续进行。尝试使用mul()
as-
df.temp
a b c d e
p 18 10 5 11 -2
r -4 6 -19 2 1
s 3 -14 1 -2 8
print(df_temp.mul(df_temp.values[0,:], axis=1))
但这给出了结果:
a b c d e
p 324 100 25 121 4
r -72 60 -95 22 -2
s 54 -140 5 -22 -16
预期输出:
a b c d e result
p 18 10 5 11 -2 -19800
r -4 6 -19 2 1 912
s 3 -14 1 -2 8 672
任何指针都会有所帮助。
答案 0 :(得分:2)
在axis=1
上将df.assign()
与df.prod()
一起使用:
df=df.assign(result=df.prod(axis=1))
print(df)
a b c d e result
p 18 10 5 11 -2 -19800
r -4 6 -19 2 1 912
s 3 -14 1 -2 8 672
答案 1 :(得分:0)
使用 pd.eval()
temp_df = df.copy()
temp_df['m']=pd.eval("temp_df.a*temp_df.b*temp_df.c*temp_df.d*temp_df.e")
df_temp
a b c d e m
p 18 10 5 11 -2 -19800
r -4 6 -19 2 1 912
s 3 -14 1 -2 8 672