2017-01-16 3 views
1

두 개의 데이터 프레임이 있습니다. 하나는 df1이고 다른 하나는 이고 다른 하나는 두 개의 서로 다른 위치 사이의 상호 작용을 계산합니다.Python : 다른 수의 열을 기반으로 데이터 프레임에 병합하는 방법은 무엇입니까?

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에 따라 두 dataframe을 병합하고

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 11df1

답변

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 
관련 문제