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

如何高效拆分Pandas中带键值对的字符串列为独立DataFrame列?

高效拆分DataFrame字符串列并转换为多列的实现方法

针对你遇到的indicators列格式转换需求,完全可以用Pandas的内置字符串处理+重塑方法实现,全程避免多重循环,代码简洁高效:

实现步骤与代码

import pandas as pd

# 模拟你的原始数据
data = pd.DataFrame({
    'indicators': [
        'A: 84.0% \n B: 16.0%',
        'C: 100.0%',
        'C: 100.0%',
        'D: 100.0%',
        'A: 100.0%',
        'D: 78.0% \n A: 22.0%',
        'A: 34.0% \n B: 33.0% \n C: 33.0%'
    ]
})

# 1. 将每行的多组指标拆分为独立行
split_df = data['indicators'].str.split('\n', expand=True).stack().reset_index(level=1, drop=True).to_frame('temp')

# 2. 提取指标名称和数值,转换数值类型
split_df[['col', 'value']] = split_df['temp'].str.extract(r'([A-D]): (\d+\.\d+)%')
split_df['value'] = split_df['value'].astype(float).astype(int)

# 3. 重塑为宽表,填充缺失值为0,与原索引对齐
result = split_df.pivot(columns='col', values='value').reindex(data.index).fillna(0).astype(int)

print(result)

代码说明

  • 步骤1:用str.split('\n', expand=True)把每行的多个指标拆成多列,再通过stack()将列转为行,保留原DataFrame的索引,方便后续对齐。
  • 步骤2:用正则表达式str.extract()精准提取指标字母(A-D)和百分比数值,然后把浮点型的数值转成整数,去掉.0的冗余。
  • 步骤3:通过pivot()将长表转回宽表,用reindex(data.index)确保和原DataFrame的行数、索引完全匹配,最后用fillna(0)把缺失的指标值补0。

运行后就能得到你想要的格式:

A   B    C    D
0  84  16    0    0
1   0   0  100    0
2   0   0  100    0
3   0   0    0  100
4 100   0    0    0
5  22   0    0   78
6  34  33   33    0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:53:24