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

如何对Pandas DataFrame列中的每个列表元素进行升序排序?

对Pandas DataFrame列中的列表元素进行升序排序的正确方法

咱们先聊聊你代码里的问题:

  • 你的sort_col函数里,col.sort只是引用了列表的sort方法,但没执行它(少了括号());
  • 就算补上括号,list.sort()是原地修改原列表,它不会返回任何值(默认返回None),所以你的apply操作其实是把list列全替换成了None,这就是为啥看起来列表没被排序的原因。

最简洁的正确实现

我们可以用Python内置的sorted()函数,它会返回一个新的排序后的列表,而非原地修改原列表,完美适配这个场景。而且直接对list列使用apply就行,比逐行axis=1的方式更高效。

完整代码示例:

import pandas as pd
import numpy as np

# 创建Numpy数组
array = np.array([[1, [2,1,3]], [2,[3,1,2]]])
# 创建索引名称列表
index_values = ['first', 'second']
# 创建列名称列表
column_values = ['id', 'list']
# 创建DataFrame
df = pd.DataFrame(data = array, index = index_values, columns = column_values)

# 对list列的每个列表进行升序排序
df['list'] = df['list'].apply(sorted)

print(df)

执行后输出的结果就是你想要的:

id       list
first    1  [1, 2, 3]
second   2  [1, 2, 3]

如果你想用自定义函数的写法

那得修改函数让它返回排序后的列表,比如:

def sort_col(lst):
    # 直接用sorted返回新列表即可
    return sorted(lst)
    # 也可以用原地排序的方式(需要先复制原列表避免修改源数据):
    # lst_copy = lst.copy()
    # lst_copy.sort()
    # return lst_copy

df['list'] = df['list'].apply(sort_col)

这样也能得到正确结果,不过直接用df['list'].apply(sorted)是最省心的写法~

内容的提问来源于stack exchange,提问作者blue-sky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 15:33:11