假设我有以下数据框:df = pd.DataFrame({'id': [1,2,3,4,5,6,7,8,9,10], 'name': ['a', 'nkjnkj', 'oijhoiuh', 'on', 'lnjjn', 'kmlkm', 'molijoijoij', 'kljkljhlh', 'ghkghgj', 'ihkjhkj']})我想按名称的长度对其进行排序,我可以这样做:df['len'] = df['name'].str.len()df.sort_values('len') id name len 1 a 1 4 on 2 5 lnjjn 5 6 kmlkm 5 2 nkjnkj 6 9 ghkghgj 7 10 ihkjhkj 7 3 oijhoiuh 8 8 kljkljhlh 9 7 molijoijoij 11但可以做单行吗?就像是:df.sort_by(df['name'].str.len()) #doesn't exist换句话说,我可以根据不在数据框中的系列对数据框进行排序吗?
3 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
只需将一个返回要排序的值的函数传递到key参数中即可
df.sort_values(by="name", key=lambda col: col.str.len())
id name
0 1 a
3 4 on
4 5 lnjjn
5 6 kmlkm
1 2 nkjnkj
8 9 ghkghgj
9 10 ihkjhkj
2 3 oijhoiuh
7 8 kljkljhlh
6 7 molijoijoij
呼唤远方
TA贡献1856条经验 获得超11个赞
修复你的代码
df.assign(len = df['name'].str.len()).sort_values('len').drop('len',1)
id name
0 1 a
3 4 on
4 5 lnjjn
5 6 kmlkm
1 2 nkjnkj
8 9 ghkghgj
9 10 ihkjhkj
2 3 oijhoiuh
7 8 kljkljhlh
6 7 molijoijoij
添加回答
举报
0/150
提交
取消