从pandas中的列中删除数据

时间:2017-04-09 03:19:38

标签: python pandas

我试图从我的数据框中删除一些数据,但只剪切了" 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文档并没有帮助我理解为什么它的下降超过了我的预期呢?

2 个答案:

答案 0 :(得分:3)

不,这种行为是正确的 - 假设每支球队都在与其他球队比赛,那就是第一,而且所有这些都是“来自”阿尔巴尼亚。

根据您在下面所述,您希望保留第0行,但不保留第1行,因为它会重复 ToFrom个国家/地区。消除这些的方法是:

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的解决方案相比,这个解决方案让您可以更好地控制要保留的重复项。