假设我们有一个如下的df:
df = pd.DataFrame({'A':['y2','x3','z1','z1'],'B':['y2','x3','a2','z1']})
A B
0 y2 y2
1 x3 x3
2 z1 a2
3 z1 z1
如果我们只想根据A
列中的数字对值进行排序,我们可以这样做:
df.sort_values(by='A',key=lambda x: x.str[1])
A B
3 z1 z1
2 z1 a2
0 y2 y2
1 x3 x3
如果我们想同时按列A
和B
排序,但只将键应用于列A
,有没有办法做到这一点?
df.sort_values(by=['A','B'],key=lambda x: x.str[1])
预期输出:
A B
2 z1 a2
3 z1 z1
0 y2 y2
1 x3 x3
发布于 2021-02-19 14:11:03
您可以先按B
排序,然后使用稳定的方法按A
排序:
(df.sort_values('B')
.sort_values('A', key=lambda x: x.str[1], kind='mergesort')
)
输出:
A B
2 z1 a2
3 z1 z1
0 y2 y2
1 x3 x3
https://stackoverflow.com/questions/66278976
复制