2017-05-10 7 views
4

私は2つのデータフレームを持っている:印刷する別のデータフレームに含まれていないデータフレームの列の値

df1 = pd.DataFrame({'System':['b0001','b0002']}) 
df2 = pd.DataFrame({'System':['b0001']}) 

私はのカラムシステムに含まれていないDF1のカラム系の値を印刷したいですdf2。出力は次のようになります。

b0002 

私の現在のコードは次のとおりです。

for i in df1.index: 
    if df1.System[i] not in df2.System: 
     print (df1.System[i]) 

しかし、出力は次のようになります。それはまだb0001をプリントアウトする理由

b0001 
b0002 

私が把握cant'f。私はisinで試したところ、出力は同じです。

ご協力いただければ幸いです。

+1

DF1 [〜df1.System.isin(df2.System)]? – Vaishali

答えて

4

を使用することができます。

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

出力:

System 
1 b0002 

をしかし、それを行うに、あなたが行方不明になっている方法.values

for i in df1.index: 
    if df1.System[i] not in df2.System.values: 
     print (df1.System[i]) 

出力:

b0002 
0

あなたがこれを行うのパンダの方法は次のようにisinを使用することですセット

set(df1.system).difference(set(df2.system)) 
3

numpy

np.setdiff1d(df1.System.values, df2.System.values) 

array(['b0002'], dtype=object) 
2
# This solution only prints unique elements in df1 which are not in df2 

np.setdiff1d(df1,df2) 
Out[236]: array(['b0002'], dtype=object) 
関連する問題