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

如何拆分DataFrame单列为多列并为新增列添加标记

解决Pandas中按大写字母拆分字符串并添加标记列的问题

你需要把Value列中以大写字母开头+数字组成的片段拆分出来,展开为多列后再给每列添加固定标记列。下面是具体实现方案:

步骤1:拆分字符串并展开为多列

利用正则表达式的正向预查(?=[A-Z]),可以在每个大写字母前分割字符串,这样就能完整保留每个片段(因为正向预查不会消耗匹配的字符)。用Pandas的str.split方法拆分后,将结果转为DataFrame并与原数据合并:

import pandas as pd

# 构造原始数据
df = pd.DataFrame({
    'Value': ['X1A14', 'X20P79', 'A50B7P60', 'G24C5C6B8']
})

# 按大写字母前的位置拆分,expand=True直接展开为多列
split_df = df['Value'].str.split(r'(?=[A-Z])', expand=True)
# 去掉第一列的空值(第一个字符是大写字母,拆分后第一行会是空)
split_df = split_df.drop(0, axis=1)
# 给拆分后的列命名为A、B、C、D
split_df.columns = ['A', 'B', 'C', 'D']

# 和原数据合并
result = pd.concat([df, split_df], axis=1)

这一步会得到你需要的中间结果:

Value    A    B    C     D
0    X1A14   X1  A14  NaN   NaN
1   X20P79  X20  P79  NaN   NaN
2  A50B7P60  A50   B7  P60   NaN
3 G24C5C6B8  G24   C5   C6    B8

步骤2:添加标记列并调整列顺序

直接给结果添加mark列,每个mark列对应固定的标记,然后调整列的顺序让数据列和标记列相邻:

# 添加标记列
result['mark1'] = 'A'
result['mark2'] = 'B'
result['mark3'] = 'C'
result['mark4'] = 'D'

# 调整列顺序,按Value、A、mark1、B、mark2、C、mark3、D、mark4排列
new_order = ['Value', 'A', 'mark1', 'B', 'mark2', 'C', 'mark3', 'D', 'mark4']
result = result[new_order]

# 把NaN替换为空字符串(和你要的结果格式对齐)
result = result.fillna('')

运行后就能得到最终的目标结果:

Value    A mark1    B mark2    C mark3     D mark4
0    X1A14   X1     A  A14     B          C          D
1   X20P79  X20     A  P79     B          C          D
2  A50B7P60  A50     A   B7     B  P60     C          D
3 G24C5C6B8  G24     A   C5     B   C6     C    B8     D

关键说明

  • 正则(?=[A-Z])是正向预查,匹配“后面跟着大写字母”的位置,拆分时不会破坏原有的片段结构。
  • 如果后续出现超过4个片段的情况,只需调整拆分后的列名和标记列数量即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:52:35