我试图从我的数据框中删除一些数据,但只剪切了" To country"中的重复行。柱
我的数据框如下所示:
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]
我试试吧:
df.drop_duplicates(subset='To country', inplace=True)
这会发生什么:
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]
虽然这确实摆脱了重复的“来自国家/地区”。条目,它还会删除'来自国家&地区的所有值。柱。我必须使用drop_duplicates()错误,但是pandas文档并没有帮助我理解为什么它的下降超过了我的预期呢?
答案 0 :(得分:3)
不,这种行为是正确的 - 假设每支球队都在与其他球队比赛,那就是第一,而且所有这些都是“来自”阿尔巴尼亚。
根据您在下面所述,您希望保留第0行,但不保留第1行,因为它会重复 To
和From
个国家/地区。消除这些的方法是:
df.drop_duplicates(subset=['To country', 'From country'], inplace=True)
答案 1 :(得分: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的解决方案相比,这个解决方案让您可以更好地控制要保留的重复项。