根据现有数据框中的其他列创建一个新列

时间:2019-09-17 20:32:28

标签: python pandas

我有以下两个数据框:

test=pd.DataFrame({"x":[1,2,3,4,5],"y":[6,7,8,9,0]})
test2=pd.DataFrame({"z":[1],"p":[6]})

分别导致:

    x   y
0   1   6
1   2   7
2   3   8
3   4   9
4   5   0

    z   p
0   1   6

在表测试中创建等于以下内容的“ s”列的最佳方法是什么: test["s"]=test["x"]*test2["z"]+test2["p"]

当我尝试上面的表达式时,我得到以下输出:

    x    y      s
0   1    6     7.0
1   2    7     NaN
2   3    8     NaN
3   4    9     NaN
4   5    0     NaN

但是我想要所有行的结果。我已经研究了有关apply方法或所谓的矢量化操作的内容,但我真的不知道如何解决该问题。

预期输出:

    x    y      s
0   1    6     7.0
1   2    7     8.0
2   3    8     9.0
3   4    9     10.0
4   5    0     11.0

预先感谢

2 个答案:

答案 0 :(得分:1)

这是我的解决方案,我接受了Trenton_M的建议。

test=pd.DataFrame({"x":[1,2,3,4,5],"y":[6,7,8,9,0]})
test2=pd.DataFrame({"z":[1],"p":[6]})

乘法过程:

test["s"] = test['x'] * test2.z.loc[0] + test2.p.loc[0]
test

输出:

    x   y   s
0   1   6   7
1   2   7   8
2   3   8   9
3   4   9   10
4   5   0   11

答案 1 :(得分:1)

使用scalar multiplication,如下所示:

test['s'] = test.x * test2.z[0] + test2.p[0]