连接并乘以两个DataFrame

时间:2019-07-01 22:39:10

标签: python pandas

是否有一种方法可以通过公共列(最后一列除外)来连接两个DataFrame,并将最后一列乘以两个原始表中的值?

示例:

表X

   A  B  Value
0  1  1   1.0
1  1  0   0.5
2  0  1   0.5
3  0  0   0.0

表Y

   B  C  Value
0  1  1   1.0
1  1  0   0.5
2  0  1   0.5
3  0  0   0.0

预期输出:

   A  B  C  Value
0  1  1  1   1
1  1  1  0   0.5
2  1  0  1   0.25
3  1  0  0   0
4  0  1  1   0.5
5  0  1  0   0.25
6  0  0  1   0
7  0  0  0   0

说明:

例如(A = 1,B = 1,C = 0)=> 0.5,来自

值1 [X的((A = 1,B = 1))乘以值0.5 [Y的(B = 1,C = 0)]

1 个答案:

答案 0 :(得分:3)

Quota 'GPUS_ALL_REGIONS' exceeded. Limit: 0.0 globally ,计算新列,然后删除不再需要的列。

merge

输出:

# All common columns except last
cols = df1.columns[:-1].intersection(df2.columns[:-1]).tolist()

df = df1.merge(df2, on=cols)
df = df.assign(Value = df.Value_x*df.Value_y).drop(columns=['Value_x', 'Value_y'])