为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 根据外部序列对数据框进行排序

Pandas 根据外部序列对数据框进行排序

阿波罗的战车 2023-09-26 16:43:54
假设我有以下数据框: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 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

尝试这个:

df.loc[df['name'].str.len().argsort()]


查看完整回答
反对 回复 2023-09-26
?
慕姐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


查看完整回答
反对 回复 2023-09-26
?
呼唤远方

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


查看完整回答
反对 回复 2023-09-26
  • 3 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信