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

如何将DataFrame中单列字符串按内置标签拆分为多列?

解决方法:拆分带标签的单列DataFrame为多列(自动补NA)

假设你的原始DataFrame结构如下(模拟示例):

import pandas as pd

df = pd.DataFrame({
    'raw_data': [
        'A:100,200;B:300;C:400,500,600',
        'A:700;B:800,900;C:1000',
        'B:1100;C:1200,1300,1400,1500'
    ]
})

步骤1:编写解析函数,提取标签与对应bp值列表

先写一个函数,把每行的字符串转换成标签为键、bp值列表为值的字典:

def parse_raw_string(s):
    # 按分号分割不同标签组
    tag_groups = s.split(';')
    result = {}
    for group in tag_groups:
        # 分割标签和对应的bp值字符串
        tag, bp_str = group.split(':')
        # 把bp值字符串转成整数列表
        bp_values = list(map(int, bp_str.split(',')))
        result[tag] = bp_values
    return result

步骤2:将每行解析结果转为Series并合并

利用apply处理每行数据,再用pd.concat合并所有行的Series,自动补全缺失值为NaN:

# 解析每行数据,生成Series列表
series_list = df['raw_data'].apply(lambda x: pd.Series(parse_raw_string(x)))

# 合并成最终DataFrame
final_df = pd.concat(series_list.to_list(), axis=1).T.reset_index(drop=True)

最终效果

运行后final_df的结构如下:

ABCC.1C.2C.3
0100.0300.0400.0500.0600.0NaN
1700.0800.01000.0NaNNaNNaN
2NaN1100.01200.01300.01400.01500.0

如果需要把同标签的列名统一(比如把C.1/C.2改成C_1/C_2),可以额外处理:

# 重命名列,把同标签的列按序号标注
final_df.columns = [f'{col.split(".")[0]}_{int(col.split(".")[1])+1}' if '.' in col else col for col in final_df.columns]

处理后列名变为A, B, C, C_1, C_2, C_3,更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:40:01