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

如何将DataFrame列中的字符串拆分至多个不同列?

解决方案

你的问题在于仅用-拆分只能得到两部分,而后续的字符串需要按字母+数字的规则进一步拆分。以下是针对你给出的示例格式的实现步骤:

方法一:分步拆分

  1. 先按-拆分出第一部分和剩余字符串:
import pandas as pd

# 假设你的DataFrame是df
df[['prefix', 'rest']] = df['COMPONENT_NAME'].str.split('-', expand=True)
  1. 用正则表达式提取剩余字符串中的各个组件:
    正则模式^(\d+)(c\d+)(s\d+)(a\d+)(l\d+)可以精准匹配示例中的0c0s9a0l14,捕获出0、c0、s9、a0、l14五个部分:
split_rest = df['rest'].str.extract(r'^(\d+)(c\d+)(s\d+)(a\d+)(l\d+)')
split_rest.columns = ['num', 'c_part', 's_part', 'a_part', 'l_part']
  1. 合并所有列并清理临时列:
final_df = pd.concat([df['prefix'], split_rest], axis=1)
final_df.drop(columns=['rest'], inplace=True)

方法二:一步到位正则提取

直接对整个COMPONENT_NAME列用正则提取所有目标组件,更简洁:

final_df = df['COMPONENT_NAME'].str.extract(r'^(\w+)-(\d+)(c\d+)(s\d+)(a\d+)(l\d+)')
# 给列命名,对应你的需求:c5 | 0|c0|s9|a0|l14
final_df.columns = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6']

说明

  • 原代码仅拆分了-分隔符,没有处理后续字符串的内部结构,因此无法得到多列结果。
  • 上述正则是针对你给出的c5-0c0s9a0l14这类固定结构设计的,如果你的数据有其他变体(比如字母不同、组件数量变化),可以调整正则中的匹配规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:55:09