2017-10-31 5 views
1


데이터 프레임이 두 개 있습니다. 첫 번째 데이터 프레임에는 여러 개의 상태 이름과 도시 및 여러 데이터 열이 포함되어 있습니다. 다른 데이터 프레임에는 상태와 citie 이름이 있습니다. 내가하고 싶었던 것은 첫 번째 행에서 두 번째 데이터 프레임과 같은 상태와 도시를 가진 행을 제거하는 것입니다. isin을 사용해 보았지만 작동하지 않았습니다. 나는 비교를 할 새로운 칼럼을 만들려고 생각하고 있었지만, 나는 더 빠른 것이 될 수 있다고 생각한다.
고맙습니다.팬더가 다른 데이터 프레임에 포함되어있는 경우 데이터 프레임에서 행 삭제 데이터 프레임에서 행을 삭제합니다.

+0

당신을 도울 수 없습니다, 여기에 데이터가 없습니다. –

+0

내 코드가 너무 컸지 만 @ Scott Boston이 문제를 해결하는 데 큰 도움이되었습니다. –

답변

1

IIUC :

idx1 = pd.MultiIndex.from_tuples([(1,1),(1,2),(1,3),(2,1),(2,2),(2,3)]) 

idx2 = pd.MultiIndex.from_tuples([(1,1),(1,2),(2,3)]) 

df1 = pd.DataFrame(list('ABCDEF'),index=idx1) 

df1 
    0 
1 1 A 
    2 B 
    3 C 
2 1 D 
    2 E 
    3 F 

df2 = pd.DataFrame(index=idx2) 

df2 

Empty DataFrame 
Columns: [] 
Index: [(1, 1), (1, 2), (2, 3)] 

isin 작품 :

df1[df1.index.isin(df2.index)] 

    0 
1 1 A 
    2 B 
2 3 F 

또는 "가 아닌"

df1[~df1.index.isin(df2.index)] 

    0 
1 3 C 
2 1 D 
    2 E 
+0

정말 고마워. 내 실수는'df1.index.isin (df2.index)'에 첫 번째 인덱스를 추가하는 것을 잊었다는 것이다. 이제 색인을 비교하기 위해서는 색인이 있어야합니다. 정말 고맙습니다. –

관련 문제