如何根据某些特定条件删除行

时间:2017-10-04 13:54:37

标签: python pandas python-3.6

我有一个类似下表的数据框。基于我提供的排名我想以这种方式删除行。 数据..

name    date    rank
angel   7/25/2017   3
maggie  8/8/2017    2
maggie  8/8/2017    1
maggie  8/8/2017    2
maggie  8/8/2017    3
smith   8/16/2017   1
smith   8/16/2017   3
laura   9/26/2017   2
laura   9/26/2017   1
laura   9/26/2017   2
laura   9/27/2017   3
lisa    9/5/2017    1
lisa    9/5/2017    3
bill    7/20/2017   1
bill    7/20/2017   3
bill    7/21/2017   3
bill    7/31/2017   3
bill    8/1/2017    3
bill    8/7/2017    1
tomy    8/1/2017    3

我想要做的是每个给定的名字 - 如果有一个日期 - 我想保留那一行但是同一个名字 - 如果有不同的等级,那么我想按顺序选择并删除其余的。所以例如 - 如果账单在同一日期有4行 - 但不同的排名_我想删除所有排名并且只保留所有行信息的“1”

我想要的输出是这样的:

name    date    rank
angel   7/25/2017   3
maggie  8/8/2017    1
smith   8/16/2017   1
laura   9/26/2017   1
laura   9/27/2017   3
lisa    9/5/2017    1
bill    7/20/2017   1
bill    8/7/2017    1
tomy    8/1/2017    3

有人可以帮助我吗

1 个答案:

答案 0 :(得分:0)

我能够通过以下方式得到答案

`data = df.loc[df.groupby(['name', 'date'])['rank'].idxmin()]`

但是,我仍然想知道复杂的for循环是否也可以获得。我是python的新手,很想了解更多。 感谢