2017-10-13 3 views
0

をdrop_duplicated動作しません:パンダ重複と「変更」という名前のデータセットがRIDにより、マージから得られた適切

changes.head() 

    DX_bl RID DX_m12 
0  1 3  1 
1  0 4  0 
2  0 6  0 
3  0 8  0 
4  1 10  1 

私はDX_blの行を特定することを意図して2次のコマンドを使用しましたし、 DX_m12が異なっている:

print(changes[~changes.duplicated(subset = ['DX_bl','DX_m12'], keep=False)]) 
print(changes.drop_duplicates(subset = ['DX_bl','DX_m12'])) 


    DX_bl RID DX_m12 
64  1 167  0 


    DX_bl RID DX_m12 
0  1 3  1 
1  0 4  0 
10  0 30  1 
64  1 167  0 
keep=False

場合、それはライン10(30 RID)および64(64 RID)を返すべきです。しかし、わかるように、それは10行目(RID 30)の情報を失う。

一方、 'keep'がデフォルトオプション(keep = 'first')であれば、行0(RID 3)と1(RID 4)を間違って返します。

pandasのduplicated/drop_duplicatesにバグがありますか?

+0

https://stackoverflow.com/help/mcveを送信してください。確認するのが簡単になります。 changes.head()だけを投稿したので、あなたのケースを正確に書き換えられません。 –

+0

ドキュメントを見て、あなたが投稿した2件は同等ではないと思います。私は自分の推論で答えを投稿します –

+0

print(changes [〜 'DX_bl'、 'DX_m12']、keep = False)])print(changes.drop_duplicates(サブセット= [['DX_bl '、' DX_m12 ']]))) – pyd

答えて

0

OK、「DX_blとDX_m12が異なる行を識別する意図があります」というコメントがありませんでした。

あなたはこれらの2列が異なるすべての行を一覧表示したい場合は、この使用することができます。

changes[changes['DX_bl'] != changes['DX_m12']] 

または、同等:あなたが投稿したデータから

changes.query('DX_bl != DX_m12') 

を、それはそうduplicated()とdrop_duplicates()がドキュメントとして動作しています。

関連する問題