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

假设我有以下数据框:


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

换句话说,我可以根据不在数据框中的系列对数据框进行排序吗?


阿波罗的战车
浏览 74回答 3
3回答

GCT1015

尝试这个:df.loc[df['name'].str.len().argsort()]

慕姐4208626

只需将一个返回要排序的值的函数传递到key参数中即可df.sort_values(by="name", key=lambda col: col.str.len())   id         name0   1            a3   4           on4   5        lnjjn5   6        kmlkm1   2       nkjnkj8   9      ghkghgj9  10      ihkjhkj2   3     oijhoiuh7   8    kljkljhlh6   7  molijoijoij

呼唤远方

修复你的代码df.assign(len = df['name'].str.len()).sort_values('len').drop('len',1)   id         name0   1            a3   4           on4   5        lnjjn5   6        kmlkm1   2       nkjnkj8   9      ghkghgj9  10      ihkjhkj2   3     oijhoiuh7   8    kljkljhlh6   7  molijoijoij
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python