我有一个很宽的pandas dataframe,其中有一列名称为description,这一列是文本。我想按照这一列中文本的长度从长到短对dataframe中的每一行重新排序。
我试了直接用df.sort_values('description', ascending=False),得不到以上效果。那应该怎么做?
谢谢各位!
2个回答
new_df = df.reindex(df['description'].str.len().sort_values(ascending=False).index)
我想到的办法就是新插入一列len_d用来记录description的长度,然后对len_d这列排序,排完之后删除
df['len_d'] = df['description'].apply(len)
df = df.sort_values('len_d', ascending=False).drop('len_d', axis=1)
相关讨论
pandas按照两列sort_values,一个升序一个降序
pandas同时返回一个dataframe的前几行(head)和后几行(tail)
使用pandas.to_datetime转化文本到时间戳时怎么只保留日期?
怎么提取pandas dataframe中某一列每个字符串的前n个字符?
怎么利用pandas新建一个只有列名的空的dataframe?
pandas操作出现ValueError: The truth value of a Series is ambiguous.
pandas报错ValueError: Cannot convert non-finite values (NA or inf) to integer
随便看看