gpt4 book ai didi

pandas - 使用 groupby 和条件对 Pandas 数据框进行排序

转载 作者:行者123 更新时间:2023-12-05 05:12:29 24 4
gpt4 key购买 nike

我正在尝试根据满足条件的组对数据框进行排序。

我在对组进行排序时遇到语法错误。在尝试上述操作之前,我丢失了数据框的初始顺序。

这是我要实现的排序顺序:

1) 按第一列和测试列排序。

2) Test==1 groups, sort on Secondary and then by Final column.

---测试==0组,仅在最后一列排序。

import pandas as pd

df=pd.DataFrame({"First":[100,100,100,100,100,100,200,200,200,200,200],"Test":[1,1,1,0,0,0,0,1,1,1,0],"Secondary":[.1,.1,.1,.2,.2,.3,.3,.3,.3,.4,.4],"Final":[1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,10.10,11.11]})

def sorter(x):
if x["Test"]==1:
x.sort_values(['Secondary','Final'], inplace=True)
else:
x=x.sort_values('Final', inplace=True)


df=df.sort_values(["First","Test"],ascending=[False, False]).reset_index(drop=True)


df.groupby(['First','Test']).apply(lambda x: sorter(x))

df

Expected result:

First Test Secondary Final
200 1 0.4 10.1
200 1 0.3* 9.9*
200 1 0.3* 8.8*

200 0 0.4 11.11*
200 0 0.3 7.7*

100 1 0.5 2.2
100 1 0.1* 3.3*
100 1 0.1* 1.1*

100 0 0.3 6.6*
100 0 0.2 5.5*
100 0 0.2 4.4*

最佳答案

你可以试试不用groupby按降序排序,w.r.t 你给的顺序,排序顺序会改变。它对你有用吗<​​/p>

df=pd.DataFrame({"First":[100,100,100,100,100,100,200,200,200,200,200],"Test":[1,1,1,0,0,0,0,1,1,1,0],"Secondary":[.1,.5,.1,.9,.4,.1,.3,.3,.3,.4,.4],"Final":[1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,10.10,11.11]})

df = df.groupby(['First','Test']).apply(lambda x: x.sort_values(['First','Test','Secondary','Final'],ascending=False) if x.iloc[0]['Test']==1 else x.sort_values(['First','Test','Final'],ascending=False)).reset_index(drop=True)
df.sort_values(['First','Test'],ascending=[True,False])

输出:

    Final   First   Secondary   Test
3 2.20 100 0.5 1
4 3.30 100 0.1 1
5 1.10 100 0.1 1
0 6.60 100 0.1 0
1 5.50 100 0.4 0
2 4.40 100 0.9 0
8 10.10 200 0.4 1
9 9.90 200 0.3 1
10 8.80 200 0.3 1
6 11.11 200 0.4 0
7 7.70 200 0.3 0

关于pandas - 使用 groupby 和条件对 Pandas 数据框进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54506085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com