You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按字符串长度降序排序Pandas DataFrame序列中的列表元素?

解决方案:对Pandas DataFrame列表列按字符串长度降序排序

要实现对serie列中每个列表元素按字符串长度从长到短排序的需求,用Pandas的apply()方法结合自定义排序逻辑就能轻松搞定,具体步骤如下:

  • 首先构造你的示例DataFrame(如果已经有现成的可以跳过这步):
import pandas as pd

data = {
    'brand': ['&tradition', 'Dove', 'Adidas', 'Vasaline', 'Boska'],
    'serie': [
        ['&tradition flowerpot', '&tradition spinning pen', '&tradition test'],
        ['dove deeply nourishing', 'dove men+care'],
        ['adidas ace', 'adidas gel'],
        ['vaseline advanced repair', 'vaseline men'],
        ['boska dutch', 'boska test2', 'boska testing']
    ]
}

df = pd.DataFrame(data)
  • 核心处理代码:
    我们用apply()遍历serie列的每个列表,然后用sorted()函数,指定排序的key为字符串的长度,并且设置reverse=True实现降序(最长优先):
df['serie'] = df['serie'].apply(lambda x: sorted(x, key=lambda s: len(s), reverse=True))
  • 验证结果:
    查看Boska行的处理结果,完全符合你的期望:
print(df[df['brand'] == 'Boska']['serie'].values[0])
# 输出:['boska testing', 'boska dutch', 'boska test2']

额外优化:处理异常情况

如果你的数据里可能存在空列表、None值或者空字符串,可以在排序前先做过滤,避免出现意外报错:

df['serie'] = df['serie'].apply(
    lambda x: sorted([s for s in x if s is not None and s.strip()], key=lambda s: len(s), reverse=True)
    if isinstance(x, list) else x
)

这样就能确保所有有效字符串都按长度降序排列啦!

内容的提问来源于stack exchange,提问作者rutvanelk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:12:42