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

如何将Pandas DataFrame中的字符串列转换为列表?

解决方法

你的问题核心是Metrics列存储的是字符串形式的列表,直接切片分割无法正确解析,以下是几种可行的解决方式:

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

这是最安全可靠的方式,能直接将合法的Python字面量字符串转换为对应的数据结构:

import ast
import pandas as pd

data = pd.DataFrame({'Index':[1,2],'Metrics':["['ga:users','ga:newUsers']","['ga:bounceRate','ga:pageviews']"]})

# 提取单行转换为列表
list1 = ast.literal_eval(data.loc[data['Index'] == 1, 'Metrics'].iloc[0])
list2 = ast.literal_eval(data.loc[data['Index'] == 2, 'Metrics'].iloc[0])

# 批量转换整列,生成新的列表列
data['Metrics_list'] = data['Metrics'].apply(ast.literal_eval)

# 验证结果
print(list1)  # 输出: ['ga:users', 'ga:newUsers']
print(list2)  # 输出: ['ga:bounceRate', 'ga:pageviews']

方法2:手动字符串处理(仅适合简单场景)

如果不想引入ast模块,可以通过字符串切片、分割和清理来实现:

import pandas as pd

data = pd.DataFrame({'Index':[1,2],'Metrics':["['ga:users','ga:newUsers']","['ga:bounceRate','ga:pageviews']"]})

# 处理单行
raw_str = data.loc[data['Index'] == 1, 'Metrics'].iloc[0]
list1 = [item.strip("'") for item in raw_str[1:-1].split(',')]

# 验证结果
print(list1)  # 输出: ['ga:users', 'ga:newUsers']

注意:如果原字符串中逗号后有空格,需要把split(',')改成split(', '),这种方式灵活性较差,复杂场景容易出错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:50:02