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

如何在Jupyter Notebook中用Python/Pandas拆分列中长度不等的逗号分隔值到多列

解决方案

你遇到的list index out of range报错,核心原因是部分行的拆分片段不符合键:值格式,拆分:后长度不足2,原有推导式没有兼容这类场景;同时原有写法没有限制冒号拆分次数,若值本身包含冒号也会触发报错。

方案1:兼容原有逻辑的修复版

逻辑易懂,适合需要自定义校验规则的场景:

import pandas as pd
import numpy as np

def parse_single_row(row_content):
    row_dict = {}
    # 按逗号拆分每个键值对片段
    for item in row_content.split(','):
        # 只拆分第一个冒号,避免值中包含冒号导致拆分异常
        parts = item.split(':', maxsplit=1)
        # 仅保留符合键:值格式的片段
        if len(parts) == 2:
            key = parts[0].strip()
            value = parts[1].strip()
            row_dict[key] = value
    return row_dict

list_of_dicts = [parse_single_row(x) for x in Df1['column_A']]
# 生成结果表,空值统一替换为Null
Df2 = pd.DataFrame.from_dict(list_of_dicts).replace({np.nan: 'Null'})

方案2:Pandas向量化实现(推荐大数据集用)

用内置字符串处理方法,无需手动循环,处理Kaggle这类大规模数据集效率更高:

import pandas as pd
import numpy as np

# 正则匹配所有「键:值」对,自动整理为多列
Df2 = Df1['column_A'].str.extractall(r'([^:,]+):\s*([^,]+)')\
        .reset_index(level=1, drop=True)\
        .set_index(0, append=True)[1]\
        .unstack(0)\
        .replace({np.nan: 'Null'})
# 清理列名前后空格
Df2.columns = Df2.columns.str.strip()

两种方案最终输出的表结构都和你需要的示例完全一致,所有不存在的键对应的列值都会填充为Null。

内容的提问来源于stack exchange,提问作者The Weighted Tooth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:39:03