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

将DataFrame中含字符串形式列表的列拆分为两列

解决DataFrame字符串列表拆分为多列的问题

我来帮你搞定这个需求!你遇到的问题是把DataFrame里存成字符串的列表拆分成单独的数值列,其实有两种简单可靠的方法,我给你一步步讲清楚:

方法一:用ast.literal_eval解析字符串列表(推荐)

这个方法最稳妥,因为它能安全地把字符串形式的Python字面量(比如列表、字典)转换成实际的Python对象,还能自动保留数值类型,不用手动处理类型转换。

步骤如下:

  • 导入pandas和ast模块
  • 用apply把每个字符串转换成真实的列表
  • 把列表展开成两列

代码示例:

import pandas as pd
import ast

# 你的示例DataFrame
df = pd.DataFrame({'vals': ['[12.1, 15.0]', '[3.5, 7.2]', '[9.0, 10.1]']})

# 将字符串列表转换为实际的Python列表
df['vals_list'] = df['vals'].apply(ast.literal_eval)

# 把列表拆分成val1和val2两列
df[['val1', 'val2']] = pd.DataFrame(df['vals_list'].tolist(), index=df.index)

# 可选:删掉中间的临时列
df = df.drop('vals_list', axis=1)

print(df)

运行后你会得到:

vals  val1  val2
0  [12.1, 15.0]  12.1  15.0
1   [3.5, 7.2]   3.5   7.2
2  [9.0, 10.1]   9.0  10.1

方法二:纯字符串处理(无需额外模块)

如果你不想导入ast模块,也可以直接对字符串做拆分和清理操作:

import pandas as pd

df = pd.DataFrame({'vals': ['[12.1, 15.0]', '[3.5, 7.2]', '[9.0, 10.1]']})

# 1. 去掉字符串首尾的方括号 2. 按逗号分割成两列 3. 转换为浮点数类型
df[['val1', 'val2']] = df['vals'].str.strip('[]').str.split(',', expand=True).astype(float)

print(df)

这个方法的原理是:

  • str.strip('[]') 移除字符串开头和结尾的[和]
  • str.split(',', expand=True) 把分割后的结果直接展开成新的列
  • astype(float) 把分割得到的字符串转换成浮点数(自动忽略元素前后的空格)

注意事项

  • 确保vals列里的所有字符串都是格式统一的列表(比如每个字符串都有两个元素,用逗号分隔),否则拆分时会报错
  • 如果你的列表里有整数或者其他类型,ast.literal_eval会自动保留原类型,而字符串处理方法需要你调整astype的参数(比如int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:27:31