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

使用Pandas将DataFrame转为字典时保留数值列表

Pandas DataFrame转字典时保留数值列表的解决办法

先修复DataFrame再转字典(推荐)

问题本质是你的DataFrame里那些看似列表的内容其实是字符串类型,所以转字典后还是字符串。先把这些列转成真正的列表,再转字典就没问题了:

已知目标列的情况

如果你清楚哪些列是字符串格式的数值列表(比如Coord、Elev),直接用ast.literal_eval转换:

import ast
import pandas as pd

# 转换指定列
for col in ['Coord', 'Elev']:
    DF[col] = DF[col].apply(ast.literal_eval)

# 转成字典列表
NDF = DF.to_dict(orient='records')

未知目标列的情况

不确定哪些列需要转换的话,可以尝试自动检测(注意:可能误判非列表格式的字符串,谨慎使用):

import ast

def str_to_list(val):
    try:
        return ast.literal_eval(val)
    except (ValueError, SyntaxError):
        return val

# 遍历所有列尝试转换
DF = DF.applymap(str_to_list)
NDF = DF.to_dict(orient='records')

直接遍历已生成的字典列表修复

如果已经得到了NDF,也可以直接遍历每个字典修改对应字段:

指定字段修改

import ast

for item in NDF:
    item['Coord'] = ast.literal_eval(item['Coord'])
    item['Elev'] = ast.literal_eval(item['Elev'])

自动检测修改

import ast

for item in NDF:
    for key, val in item.items():
        # 判断是否是字符串格式的列表
        if isinstance(val, str) and val.startswith('[') and val.endswith(']'):
            try:
                item[key] = ast.literal_eval(val)
            except:
                # 转换失败就保留原内容
                pass

处理后,NDF里的Coord、Elev就会是真正的数值列表,和你期望的输出一致。


内容的提问来源于stack exchange,提问作者I am tired

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:42:20