2017-11-23 3 views
0

나는 2 DFS 있습니다

df1 
      ponder  valor  
X   0.977011 145.000   
X   0.833333 -421.660  
Y   0.649425 1408.500   
W   0.609195 560.500   
Z   0.471264 132.300   
Y   0.431034 -1439.250   
X   0.321839 435.116 

df2 
    sub_0 
B  10 
X  12 
C  16 
Z  9 

나는 해당 축에 일치하는 값을 조인 새로운 수비수를 생성하고 존재 해달라고 df2에서 값을 추가하고 싶습니다 이 경우 df1BC입니다.

요컨대 원하는 출력은 다음과 같을 것이다 :

sub_0 ponder valor  
B 10 NaN  NaN 
Z 9 0.609195 560.500 
C 16 NaN  NaN 
X 12 0.977011 145.000 
X 12 0.321839 435.116 
X 12 0.833333 -421.660 
:

  ponder  valor  sub_0 
X   0.977011 145.000  12 
X   0.833333 -421.660  12 
Y   0.649425 1408.500  Nan  
W   0.609195 560.500  Nan 
Z   0.471264 132.300  9 
Y   0.431034 -1439.250  Nan  
X   0.321839 435.116  12 
B   Nan   Nan  10  
C   Nan   Nan  16 

join 기능의 문제가 결합 기능에 명시된 df 명령이 첫 번째로 인덱스 값을 유지한다는 것이다

원하는 출력을 얻으려면 어떻게해야합니까?

답변

2

당신은 인덱스에 외부 병합을 수행 할 수 있습니다 순서가 문제이다

df1.merge(df2, left_index=True, right_index=True, how='outer') 

    ponder  valor sub_0 
B  NaN  NaN 10.0 
C  NaN  NaN 16.0 
W 0.609195 560.500 NaN 
X 0.977011 145.000 12.0 
X 0.833333 -421.660 12.0 
X 0.321839 435.116 12.0 
Y 0.649425 1408.500 NaN 
Y 0.431034 -1439.250 NaN 
Z 0.471264 132.300 9.0 
2

경우, 병합 사용한다, 당신은 combine_first

df1.combine_first(df2) 
Out[273]: 
    ponder sub_0  valor 
B  NaN 10.0  NaN 
C  NaN 16.0  NaN 
W 0.609195 NaN 560.500 
X 0.977011 12.0 145.000 
X 0.833333 12.0 -421.660 
X 0.321839 12.0 435.116 
Y 0.649425 NaN 1408.500 
Y 0.431034 NaN -1439.250 
Z 0.471264 9.0 132.300 

또는

를 사용 할 수없는 경우
df1.join(df2,how='outer') 
Out[282]: 
    ponder  valor sub_0 
B  NaN  NaN 10.0 
C  NaN  NaN 16.0 
W 0.609195 560.500 NaN 
X 0.977011 145.000 12.0 
X 0.833333 -421.660 12.0 
X 0.321839 435.116 12.0 
Y 0.649425 1408.500 NaN 
Y 0.431034 -1439.250 NaN 
Z 0.471264 132.300 9.0