假设我具有以下数据框:
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
换句话说,我可以根据不在数据框中的序列对数据框进行排序吗?
答案 0 :(得分:2)
尝试一下:
df.loc[df['name'].str.len().argsort()]
答案 1 :(得分:2)
只需传递一个函数,即可将要排序的值返回到map()
参数
map(~lm(value ~ Time * Group, data = .) %>% summary())
答案 2 :(得分:1)
修正您的代码
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