我有一个类似下表的数据框。基于我提供的排名我想以这种方式删除行。 数据..
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
有人可以帮助我吗
答案 0 :(得分:0)
我能够通过以下方式得到答案
`data = df.loc[df.groupby(['name', 'date'])['rank'].idxmin()]`
但是,我仍然想知道复杂的for循环是否也可以获得。我是python的新手,很想了解更多。 感谢