2017-04-09 7 views
2

私は私のデータフレームからいくつかのデータが、「国へ」の列に重複がある行だけを剪定しようとしている削除データ

マイデータフレームは次のようになります。

df.drop_duplicates(subset='To country', inplace=True) 

そして、何が起こるかは、このです:

Year From country To country Points 
0 2016  Albania Armenia  0 
1 2016  Albania Armenia  2 
2 2016  Albania Australia  12 
     Year From country  To country Points 
2129 2016 United Kingdom The Netherlands  0 
2130 2016 United Kingdom   Ukraine  10 
2131 2016 United Kingdom   Ukraine  5 

[2132 rows x 4 columns] 

私はそれでこれを試してみてください

Year From country To country Points 
0 2016  Albania Armenia  0 
2 2016  Albania Australia  12 
4 2016  Albania Austria  0 
    Year From country  To country Points 
46 2016  Albania The Netherlands  0 
48 2016  Albania   Ukraine  0 
50 2016  Albania United Kingdom  5 

[50 rows x 4 columns] 

これは、重複した 'To country'エントリを削除しますが、 'From country'列のすべての値も削除します。私は間違ったdrop_duplicates()を使用している必要がありますが、パンダのドキュメントは私がそれを期待している以上に落ちる理由を理解する助けにはなりませんか?

答えて

3

いいえ、この動作は正しいです。すべてのチームが1チームおきにプレーしていると仮定すると、最初のチームがすべて見つかっており、最初のチームはすべて "From"アルバニアです。

あなたは以下の言ってきたことから、あなたは行0を維持したいが、それは両方ToFrom国を繰り返しているため1行ではありません。これらを解消する方法は次のとおりです。

df.drop_duplicates(subset=['To country', 'From country'], inplace=True) 
+0

ああ。私は今、それが何をしているのか理解していますが、私はそれが私がしたいことをする方法を知らない。私が望むのは、各国の重複を削除することです。すなわち:国によって 年 0 2016アルバニアアルメニア0 2 2016アルバニアオーストラリア12国から国ポイントに 年 2129 2016イギリス・オランダ0 2130 2016イギリスウクライナ10 にそのような何かをポイント、私はコメントで読むことができることを願っています –

+0

国の*ペア*ごとに重複していますか?例えば、 '(アルバニア、アルメニア)'は一度だけ起こっていますか?または列間の重複はありますか?のように、あなたはアルメニアを「To」と「From」の両方にしたくないのですか? –

+0

そうですね、私はまだ国の列にすべての国があるようにしたいと思いますが、[From countries]列にある[To countries]列の重複値だけを取り除くだけです –

1

最も簡単な解決策は、「国へ」の名前でグループ化することと、(あなたが好む場合、または最後の)各グループから行を最初に取る:

df.groupby('To country').first().reset_index() 
#  To country Year From country Points 
#0   Armenia 2016   Albania  0 
#1  Australia 2016   Albania  12 
#2 The Netherlands 2016 United Kingdom  0 
#3   Ukraine 2016 United Kingdom  10 

aryamccarthyのソリューションと比較すると、これにより、保持する重複をより詳細に制御できます。

+0

私は意図が明確ではないと感じていますが、これはツールの創造的な使用だと思います。実際、必要に応じてより多くのコントロールを提供します。 –