これを書く
結論を先に書いてしまうとこうです。
df3 = df1[~df1['row1'].isin(df2['row2'])]
こういうことをやりたい
あるデータフレームdf1から、
そのデータフレームのもつcolumn 'row1'と、
比較対象データフレームdf2のもつcolumn 'row2'を比較し、
row2には存在しないrow1をもつ行をdf1から抽出したい。
SQLで書くとこうです。
SELECT * FROM df1
WHER df1.row1 NOT IN (SELECT row2 FROM df2)
df1のデータ
color | row1 |
---|---|
red | eagle |
blue | shark |
yellow | lion |
green | elephant |
white | tiger |
black | world |
df2のデータ
name | row2 |
---|---|
Sela | shark |
Leo | lion |
Tusk | elephant |
Amu | tiger |
df1から取り出したいデータ
color | row1 |
---|---|
red | eagle |
black | world |
実装
Zyuohger.py
import pandas as pd
df1 = pd.DataFrame({
'color':['red', 'blue', 'yellow','green', 'white','black',],
'row1' :['eagle','shark','lion', 'elephant','tiger','world',],
})
df2 = pd.DataFrame({
'name':['Sela', 'Leo', 'Tusk', 'Amu',],
'row2':['shark','lion','elephant','tiger',],
})
df3 = df1[~df1['row1'].isin(df2['row2'])]
print df3
結果
実行すると次のようになります。
$ python Zyuohger.py
color row1
0 red eagle
5 black world