Python:如何根据不同的列数合并到数据框?

时间:2017-01-16 20:18:05

标签: python pandas merge

我有两个数据框,第一个df1包含有关某个地方的信息,而第二个df2计算两个不同地点之间的互动。

df1: 
     ID   x   y
0    0    5   2
1    1    2   3
2    2    3   6
3    3    0   1
4    4    9   8

df2: 
    ID1  ID2  t
0    1    4   20
1    1    2   33
2    2    3   64
3    3    4   13
4    1    3   80
5    11   2   34

我想基于df1合并两个数据框并具有类似的东西

df3: 
    ID1  ID2  t    x1  y1  x2  y2
0    1    4   20   2   3   9   8
1    1    2   33   2   3   3   6
2    2    3   64   3   6   0   1
3    3    4   13   0   1   9   8
4    1    3   80   1   3   0   1
5    11   2   34  NaN NaN  3   6

NaN值是由地点ID 11不在df1

的事实引起的

1 个答案:

答案 0 :(得分:0)

试试这个:

In [36]: df2.merge(df1, left_on='ID1', right_on='ID', how='left') \
            .merge(df1, left_on='ID2', right_on='ID', how='left', suffixes=['','_2']) \
            .drop(['ID', 'ID_2'], 1)
Out[36]:
   ID1  ID2   t    x    y  x_2  y_2
0    1    4  20  2.0  3.0    9    8
1    1    2  33  2.0  3.0    3    6
2    2    3  64  3.0  6.0    0    1
3    3    4  13  0.0  1.0    9    8
4    1    3  80  2.0  3.0    0    1
5   11    2  34  NaN  NaN    3    6