基于外部序列的数据帧排序

2024-09-29 19:29:27 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下数据帧:

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

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


Tags: 数据nameiddflen排序onlnjjn
3条回答

修正你的代码

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

试试这个:

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

只需将返回要排序的值的函数传递到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

相关问题 更多 >

    热门问题