按字符串列的长度对数据帧进行排序[重复]
Posted
技术标签:
【中文标题】按字符串列的长度对数据帧进行排序[重复]【英文标题】:Sort dataframe by length of a string column [duplicate] 【发布时间】:2018-02-20 23:22:34 【问题描述】:使用 Python。我有一个包含三列的数据框:
Author | Title | Reviews
我想按评论列中的字符串长度排序。
如果我这样做了
df.sort_values('Review', ascending = False)
它按字母顺序排序,从“z
”开始。
如何让它按评论列中字符串的长度排序?
【问题讨论】:
【参考方案1】:我认为您需要 len
来分配索引的长度,sort_index
和最后一个 reset_index
:
df = pd.DataFrame('Author':list('abcdef'),
'Title ':list('abcdef'),
'Review':['aa', 'aasdd', 'dwd','dswee dass', 'a', 'sds'])
print (df)
Author Review Title
0 a aa a
1 b aasdd b
2 c dwd c
3 d dswee dass d
4 e a e
5 f sds f
df.index = df['Review'].str.len()
df = df.sort_index(ascending=False).reset_index(drop=True)
print (df)
Author Review Title
0 d dswee dass d
1 b aasdd b
2 c dwd c
3 f sds f
4 a aa a
5 e a e
【讨论】:
【参考方案2】:选项 1
使用 df.argsort
和 df.reindex
df
Review
0 abc
1 foo123
2 b
df = df.reindex((-df.Review.str.len()).argsort()).reset_index(drop=True)
df
Review
0 foo123
1 abc
2 b
选项 2
使用 np.argsort
df = df.reindex(np.argsort(-df.Review.str.len())).reset_index(drop=True)
df
Review
0 foo123
1 abc
2 b
选项 3
使用 df.sort_values
和 df.iloc
df = df.iloc[(-df.Review.str.len()).argsort()].reset_index(drop=True)
df
Review
0 foo123
1 abc
2 b
【讨论】:
以上是关于按字符串列的长度对数据帧进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章