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

如何对Pandas中列表格式的列值进行按字母排序?

如何对DataFrame行内逗号分隔的字符串按字母排序

你之前用sort_values()没效果,是因为这个方法是对整列的行数据排序,而非对每行内部的字符串内容做排序。要实现行内物品名称按字母排序,得把每行的字符串拆分成列表,排序后再合并回去,具体操作如下:

解决步骤

  1. 拆分字符串:用str.split(',')把每行的bundle列按逗号拆分成独立物品的列表。
  2. 清理空格:拆分后每个物品可能带首尾空格(比如示例里逗号前后的空格差异),用列表推导式配合strip()去掉多余空格。
  3. 排序列表:对清理后的物品列表用sorted()函数按字母顺序排序。
  4. 合并字符串:把排序后的列表重新用逗号拼接成字符串。

完整代码示例

针对你的测试数据,代码可以这么写:

import pandas as pd

testdf = pd.DataFrame({'sales_order': ['so-1','so-2'],
'Inv_item': ['Revolve 3 Clean 110cm,Resolution 3 Glare - 120bp- Normal viscosity',
'Resolution 3 Glare - 120bp - Normal viscosity,Revolve 3 Clean 110cm']})

# 处理每行的Inv_item列:拆分→去空格→排序→合并
testdf['sorted_Inv_item'] = testdf['Inv_item'].apply(
    lambda x: ','.join(sorted([item.strip() for item in x.split(',')]))
)

print(testdf)

输出结果

运行后会生成新列sorted_Inv_item,两行的内容会统一为按字母排序后的结果:

sales_order                                           Inv_item                                  sorted_Inv_item
0        so-1  Revolve 3 Clean 110cm,Resolution 3 Glare - 12...  Resolution 3 Glare - 120bp- Normal viscosity,...
1        so-2  Resolution 3 Glare - 120bp - Normal viscosity,...  Resolution 3 Glare - 120bp - Normal viscosity,...

额外说明

  • 如果需要忽略大小写排序,把sorted()改成sorted(key=str.lower)即可。
  • 3000行数据用这个方法完全没问题,apply配合向量化操作的效率足够支撑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:33:21