在两列数据交集周围合并两个Pandas数据帧

时间:2017-09-17 15:06:31

标签: python python-3.x pandas numpy machine-learning

我正在使用两个数据框。第一个,d1 ...

+-------+----------+-------------+-------+
| Index | Location | Num of Reps | Sales |
+-------+----------+-------------+-------+
|     0 |    75894 |           3 |    12 |
|     1 |    75286 |           7 |    24 |
|     2 |    27659 |           3 |    17 |
|     3 |    38482 |           6 |    19 |
|     4 |    78634 |           8 |    21 |
+-------+----------+-------------+-------+

和第二个d2

+-------+--------+
| Index | Profit |
+-------+--------+
| 27654 | 132.65 |
| 75894 | 140.38 |
| 75286 | 310.28 |
| 38482 | 290.83 |
| 75894 | 156.78 |
| 86753 | 302.35 |
+-------+--------+

在d2中,位置值被列为索引。 d2具有比d1更多的行,并且只有来自d2的位置值的子集与来自d1的位置值的子集相匹配。

我想要的是一个新的数据帧(d3),它包含位置值的交集,如果匹配则包含来自两个数据帧的所有列数据。在这个例子中,它看起来像......

+-------+----------+-------------+-------+--------+
| Index | Location | Num of Reps | Sales | Profit |
+-------+----------+-------------+-------+--------+
|     0 |    75894 |           3 |    12 | 140.38 |
|     1 |    75286 |           7 |    24 | 310.28 |
|     2 |    38482 |           6 |    19 | 290.83 |
+-------+----------+-------------+-------+--------+

以下是我在编码方面的想法:

d2['Location'] = d2(0, axis=1)
d2.reset_index(drop=True, inplace=True)
d3 = d1
#d3['Profit'] = <missing code>

对于注释掉的行,我想也许某种lambda函数会检查匹配的邮政编码,并在匹配的情况下附加相关值。但我不确定它是否可以一行完成。

上面代码的第一行会引发以下错误:

TypeError: 'DataFrame' object is not callable

0 个答案:

没有答案