Python - DataFrame:将多列乘以另一列并保存在新列中

时间:2018-01-17 10:51:34

标签: python python-3.x pandas dataframe

我无法找到有效的方法。 我在Python中的DataFrame下面有从A到Z的列

     A    B    C ...   Z
0  2.0  8.0  1.0 ... 5.0
1  3.0  9.0  0.0 ... 4.0
2  4.0  9.0  0.0 ... 3.0
3  5.0  8.0  1.0 ... 2.0
4  6.0  8.0  0.0 ... 1.0
5  7.0  9.0  1.0 ... 0.0

我需要将每个列从B到Z乘以A,(B x A,C x A,...,Z x A),并将结果保存在新列(R1,R2 ... ,R25)。 我会有这样的事情:

     A    B    C ...   Z    R1   R2  ...  R25
0  2.0  8.0  1.0 ... 5.0  16.0  2.0  ... 10.0
1  3.0  9.0  0.0 ... 4.0  27.0  0.0  ... 12.0
2  4.0  9.0  0.0 ... 3.0  36.0  0.0  ... 12.0
3  5.0  8.0  1.0 ... 2.0  40.0  5.0  ... 10.0
4  6.0  8.0  0.0 ... 1.0  48.0  0.0  ... 6.0
5  7.0  9.0  1.0 ... 0.0  63.0  7.0  ... 0.0

我能够使用下面的代码计算结果,但是从这里我需要与原始df合并。听起来不高效。必须有一个简单/干净的方法。

df.loc[:,'B':'D'].multiply(df['A'], axis="index")

这是一个例子,我真正的DataFrame有160列x 16k行。

1 个答案:

答案 0 :(得分:1)

list理解创建新列名称,然后join创建原始列:

df1 = df.loc[:,'B':'D'].multiply(df['A'], axis="index")
df1.columns = ['R{}'.format(x) for x in range(1, len(df1.columns) + 1)]

df = df.join(df1)
print (df)
     A    B    C    Z    R1   R2
0  2.0  8.0  1.0  5.0  16.0  2.0
1  3.0  9.0  0.0  4.0  27.0  0.0
2  4.0  9.0  0.0  3.0  36.0  0.0
3  5.0  8.0  1.0  2.0  40.0  5.0
4  6.0  8.0  0.0  1.0  48.0  0.0
5  7.0  9.0  1.0  0.0  63.0  7.0