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

如何在Python中将DataFrame列中的字符串转为列表

将DataFrame中的坐标字符串转换为列表类型

你的DataFrame中Coordinates列存储的是多边形坐标的字符串形式,需要将其转换为对应的嵌套列表类型,保持结构不变,以下是两种高效可行的方法:

方法1:使用ast.literal_eval(推荐)

ast.literal_eval可以安全解析Python字面量(列表、字典等结构),比原生eval更安全,不会执行潜在恶意代码,完全适配你当前的字符串格式。

代码示例:

import pandas as pd
import ast

# 原始数据
data = {'Name': ['B1000', 'B1001', 'B1002'], 
        'Coordinates': ['[[[-9.124,38.714],[-9.124,38.714],[-9.1231966,38.713],[-9.122,38.7136]]]', 
                        '[[[-9.122,38.714],[-9.123,38.713],[-9.1231966,38.713],[-9.122,38.7136]]]', 
                        '[[[-9.165,38.740],[-9.165,38.740],[-9.1231966,38.713],[-9.1222,38.7136]]]']}
df = pd.DataFrame(data)

# 批量转换字符串为列表
df['Coordinates'] = df['Coordinates'].apply(ast.literal_eval)

# 验证结果
print(type(df['Coordinates'][0]))
# 输出:<class 'list'>
print(df['Coordinates'][0])
# 输出:[[[-9.124, 38.714], [-9.124, 38.714], [-9.1231966, 38.713], [-9.122, 38.7136]]]

方法2:使用json.loads

如果你的坐标字符串符合JSON规范(当前结构完全符合),也可以用json.loads解析,操作同样简洁。

代码示例:

import pandas as pd
import json

# 原始数据同上
df = pd.DataFrame(data)

# 批量转换
df['Coordinates'] = df['Coordinates'].apply(json.loads)

# 验证类型
print(type(df['Coordinates'][0]))
# 输出:<class 'list'>

两种方法的区别

  • ast.literal_eval支持更多Python特有格式(比如单引号字符串、None等),适配范围更广
  • json.loads严格遵循JSON规范,要求字符串必须用双引号,适合处理标准JSON格式的数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:35:19