【发布时间】:2019-06-27 14:24:01
【问题描述】:
我正在尝试根据满足条件的组对数据框进行排序。
我在对组进行排序时遇到语法错误。 在尝试上述操作之前,我丢失了数据框的初始顺序。
这是我想要达到的排序顺序:
1) 按第一列和测试列排序。
2) 测试==1 组,按次要列排序,然后按最终列排序。
---Test==0 组,仅按 Final 列排序。
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*
【问题讨论】:
-
除了一个之外,您还有其他测试值吗?如果不是,我认为下面的答案应该可以正常工作。
标签: pandas pandas-groupby