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

如何将Pandas数据框中ENUM类型的字符串单元格转为列表?

解决方法

针对你的需求,核心是要把ENUM对应的字符串内容拆分并清理格式,而不是直接把整个字符串作为单个元素加入列表。以下是几种可行的实现方式:

方式一:在循环中处理每个ENUM行

直接修改你原来的循环逻辑,对row['Value']做拆分和格式清理:

import pandas as pd

# 构造你的数据框
data = {
    'Type': ['INT', 'INT', 'ENUM', 'HEX', 'ENUM', 'ENUM'],
    'Value': ['0', '100', '"val1","val2","val3"', '0x0', '"val1","val2"', '1,4,3,8']
}
df = pd.DataFrame(data)

for index, row in df.iterrows():
    if row['Type'] == 'ENUM':
        # 1. 去掉字符串首尾的引号(如果存在)
        cleaned_str = row['Value'].strip('"')
        # 2. 按逗号拆分字符串
        raw_list = cleaned_str.split(',')
        # 3. 清理每个元素的引号,按需转换类型
        enum_list = [item.strip('"') for item in raw_list]
        # 若ENUM值是纯数字,可转成int:enum_list = [int(item) for item in raw_list]
        print(enum_list)
        # 执行你的业务逻辑doSomething()
        # doSomething()
        # 无需手动clear,每次循环会生成新列表

运行后,每个ENUM行对应的列表会是:

  • ["val1","val2","val3"](调用enum_list[0]返回val1)
  • ["val1","val2"]
  • ["1","4","3","8"](转int后为[1,4,3,8])

方式二:用Pandas的apply批量处理

如果需要把处理后的列表直接存入数据框,可用apply批量生成:

def process_enum(value):
    cleaned_str = value.strip('"')
    raw_list = cleaned_str.split(',')
    return [item.strip('"') for item in raw_list]

# 新增一列存储处理后的列表
df['Processed_ENUM'] = df.apply(
    lambda row: process_enum(row['Value']) if row['Type'] == 'ENUM' else None,
    axis=1
)

# 查看ENUM行的处理结果
print(df[df['Type'] == 'ENUM']['Processed_ENUM'])

处理后的数据框会新增一列,直接存储每个ENUM行对应的标准列表。

关键说明

你之前的问题是直接把整个row['Value']字符串加入列表,导致列表仅含1个元素;现在通过split(',')拆分字符串,再清理每个元素的多余引号,就能得到正确的多元素列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:55:09