2017-12-08 4 views
0

멀티 인덱스가있는 두 개의 데이터 프레임이 있는데 오른쪽에 조인 한 다음 오른쪽에있는 항목을 가져와 은 일치하지 않습니다.에 키 일치가 있습니다.오른쪽 조인은 파이썬에서 키가 null 인 경우입니다. MultiIndexes를 사용하는 팬더

how to do right join where key is null in python pandas에 대한 선호 대답은 다음과 같이 할 제안 :

In [1]: dfa = pd.DataFrame({'A': range(5)}, index=range(5)) 

In [2]: dfb = pd.DataFrame({'A': range(10, 15)}, index=range(3,8)) 

In [3]: dfa 
Out[3]: 
    A 
0 0 
1 1 
2 2 
3 3 
4 4 

In [4]: dfb 
Out[4]: 
    A 
3 10 
4 11 
5 12 
6 13 
7 14 

In [5]: dfb.loc[dfb.index - dfa.index] 
Out[5]: 
    A 
5 12 
6 13 
7 14 

을하지만 난 내 코드와 나는 오류가 발생하는 것을하려고하면

TypeError: cannot perform __sub__ with this index type: <class 'pandas.core.indexes.multi.MultiIndex'> 

내가 준 무슨 옵션 MultiIndexes는 서로 뺄 수 없습니까?

+0

미친 생각, 당신이 [실제로 다중 색인을 사용하는] (https://pandas.pydata.org/pandas-docs/stable/advanced.html)을 사용하여 예제를 수정할 수 있습니까? –

답변

0

일치하지 않는 항목을 가져 오기 위해 조인 할 필요가 없습니다. 더 간단한 방법은 아래 사용하는 것입니다 : 조인 사용

df = dfb[dfb.index.isin(dfa.index) == False] 

대체 방법으로, 다음과 같습니다

a = dfa.join(dfb, lsuffix='a', how='right') 
a[a.Aa.isnull()][['A']] 

나는 당신의 정확한 요구 사항을 모르겠지만, 그 결과를 얻으려면, 첫째는 아마도 목표 달성의 더 좋은 방법. 감사합니다

+1

첫 번째 옵션은 아름답게 작동합니다. 감사합니다! –