如何在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
相关产品推荐
相关产品推荐

