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

如何对Pandas DataFrame的Scores列中的嵌套列表进行排序?

解决方法

你之前用的df.sort_values(by=["Scores"])是对整个Scores列的行进行排序,而非对每个列表内部的元素排序,这就是没得到预期结果的原因。要实现列表内部排序,我们可以用apply方法遍历Scores列的每个元素,对列表类型的元素单独处理:

完整代码

import pandas as pd
import numpy as np

df = pd.DataFrame({'Name':['John', 'Rachel', 'Adam','Joe'],
                   'Age':[95, 102, 31,np.nan],
                   'Scores':[np.nan, [80, 82, 78], [25, 20, 30, 60, 21],np.nan]
                  })

# 对Scores列的列表内部排序,非列表元素(NaN)保持不变
df['Scores'] = df['Scores'].apply(lambda x: sorted(x) if isinstance(x, list) else x)

print(df)

输出结果

Name    Age             Scores
0    John   95.0                NaN
1  Rachel  102.0        [78, 80, 82]
2    Adam   31.0  [20, 21, 25, 30, 60]
3     Joe    NaN                NaN

这段代码的逻辑很直接:

  • 用apply遍历Scores的每一行元素
  • 通过isinstance(x, list)判断当前元素是否为列表
  • 如果是列表,用sorted()对其内部元素做升序排序;如果是NaN,直接返回原值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:42:35