我有一个这样的数据框:
df = pd.DataFrame({"name":["Foo", "Foo", "Baar", "Foo", "Baar", "Foo", "Baar", "Baar"],
"count_1":[5,10,12,15,20,25,30,35],
"count_2" :[100,150,100,25,250,300,400,500]})
我需要首先确保所有不同的群组(例如,此处的名称)具有更高的count_2。我目前在组之间进行排名,然后按组和排名对数据框进行排序,以移动具有更高排名的不同组。
df['rank'] = df.groupby("name")["count_2"].rank(method="max", ascending=False)
df = df.sort_values(by=["rank", "count_2"], ascending=[True, False])
df["final_rank"] = xrange(1,len(df)+1)
它会产生我想要的结果,如下所示:
count_1 count_2 name rank final_rank
35 500 Baar 1 1
25 300 Foo 1 2
30 400 Baar 2 3
10 150 Foo 2 4
20 250 Baar 3 5
5 100 Foo 3 6
12 100 Baar 4 7
15 25 Foo 4 8
然而,这是相对缓慢的,因为我需要在不同的数据集上重复执行它,并且需要它非常快,我在30行的DF上进行测试。
我问其他任何提高速度的方法?越快越好!
非常感谢