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

如何对含字典的DataFrame列按值进行排序?

解决方案

假设你的数据存储在Pandas DataFrame的Column_1列中,以下是实现字典按值排序的完整代码:

核心步骤

  1. 将字符串格式的字典解析为Python原生字典对象
  2. 对字典的键值对按值进行升序排序
  3. 重新组合为有序字典(Python3.7+原生字典支持插入顺序)
  4. 转换回符合要求的字符串格式

代码实现

import pandas as pd
import ast

def sort_dict_by_value(dict_str):
    # 安全解析字符串为字典(避免eval的风险)
    original_dict = ast.literal_eval(dict_str)
    # 按值排序键值对,x[1]代表取键值对中的值作为排序依据
    sorted_items = sorted(original_dict.items(), key=lambda x: x[1])
    # 生成排序后的字典
    sorted_dict = dict(sorted_items)
    # 调整字符串格式匹配示例输出
    return str(sorted_dict).replace(": ", ": ").replace(",", " , ")

# 模拟你的数据集
df = pd.DataFrame({
    "Column_1": [
        '{"X":5 , "Y" :10 , "Z" : 6}',
        '{"X":0.4 , "Y": 0.1}',
        '{"Z":0.55, "W": 7 , "X":3}'
    ]
})

# 对目标列批量处理
df["Column_1"] = df["Column_1"].apply(sort_dict_by_value)

print(df)

输出结果

Column_1
0  {'X': 5 ,  'Z': 6 ,  'Y': 10}
1    {'Y': 0.1 ,  'X': 0.4}
2  {'Z': 0.55 ,  'X': 3 ,  'W': 7}

你之前可能踩的坑

  • 直接对字符串用sorted():会把字符串拆成单个字符排序,而非处理字典结构
  • 未指定排序key:默认sorted()会按字典的键排序,需要显式指定key=lambda x: x[1]来按值排序
  • 用eval()解析字符串:存在代码注入风险,推荐使用ast.literal_eval()做安全解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:40:29