将每一行中的每个元素相乘并将新列追加到同一dataFrame中?

时间:2019-05-21 12:22:04

标签: python python-3.x pandas numpy dataframe

想要乘以一行的每个元素,然后为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

任何指针都会有所帮助。

2 个答案:

答案 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