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

2024-10-06 14:20:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧第一个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值是由位置ID11不在df1中这一事实引起的


Tags: 数据信息id地方nandf1df2x1
1条回答
网友
1楼 · 发布于 2024-10-06 14:20:44

试试这个:

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

相关问题 更多 >