2017-10-31 5 views
1


私は2つのデータフレームを持ちます。最初のデータフレームには、州名と都市とデータの異なる複数のインデックスが含まれています。他のデータフレームには、州とシティーの名前があります。私がしたいのは、2番目のデータフレームと同じ州と都市を持つ行を最初の行から削除することです。私は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)'に追加するのを忘れたことでした。インデックスを比較するには、インデックスが必要です。どうもありがとうございます。 –

関連する問題