导读:本期聚焦于小伙伴创作的《Python Pandas如何根据指定分隔符及大写字母规则拆分字符串列》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Python Pandas如何根据指定分隔符及大写字母规则拆分字符串列》有用,将其分享出去将是对创作者最好的鼓励。

在数据处理场景中,我们经常会遇到需要对Pandas数据框的字符串列进行拆分的任务,有时候拆分规则不是单一的,既要按照指定分隔符拆分,还要在大写字母的位置进行拆分,比如处理混合了分隔符和驼峰命名格式的字符串数据。本文将介绍具体的实现方法。

Python Pandas如何根据指定分隔符及大写字母规则拆分字符串列

基础拆分方法回顾

Pandas本身提供了str.split方法用于按照指定分隔符拆分字符串列,该方法返回拆分后的列表,我们可以通过设置expand=True参数将结果展开为新的列。比如按照下划线拆分字符串列的基础用法如下:

import pandas as pd

# 构造测试数据
df = pd.DataFrame({
    "str_col": ["abc_def_ghi", "jkl_mno_pqr", "stu_vwx_yz"]
})

# 按照下划线拆分字符串列
split_result = df["str_col"].str.split("_", expand=True)
print(split_result)

结合大写字母规则的复合拆分

当我们需要同时按照指定分隔符和大写字母规则拆分时,单纯使用str.split无法满足需求,此时可以结合正则表达式实现。核心思路是使用正则的零宽断言,匹配分隔符或者大写字母前面的位置作为拆分点。

比如我们需要按照下划线_或者大写字母的位置拆分字符串,对应的正则表达式可以写为_|(?=[A-Z]),其中_匹配下划线,(?=[A-Z])是正向零宽断言,匹配大写字母前面的位置,不会消耗字符。

我们可以通过str.split方法传入该正则表达式实现拆分,示例如下:

import pandas as pd

# 构造包含分隔符和大写字母的测试数据
df = pd.DataFrame({
    "str_col": ["abc_DefGhi", "jkl_MnoPqr", "stu_VwxYz"]
})

# 按照下划线或者大写字母位置拆分
# 需要设置regex=True启用正则匹配
split_result = df["str_col"].str.split(r"_|(?=[A-Z])", expand=True)
print(split_result)

上述代码会先将下划线作为拆分点,再在大写字母D、G、M、P、V、Y前面进行拆分,最终得到拆分后的多列结果。

处理拆分后的空值问题

在使用上述正则拆分时,可能会出现拆分后存在空字符串的情况,比如字符串开头就是大写字母,或者连续出现分隔符和大写字母。我们可以通过后续处理过滤掉空值,或者调整正则表达式优化拆分逻辑。

比如如果希望避免拆分出空字符串,可以调整正则表达式为(?<=.)_|(?=[A-Z]),其中(?<=.)是反向零宽断言,确保下划线前面有字符才会作为拆分点,减少空值的产生。示例如下:

import pandas as pd

df = pd.DataFrame({
    "str_col": ["_AbcDef", "Ghi_JklMno", "Pqr__Stu"]
})

# 优化后的正则拆分,减少空值
split_result = df["str_col"].str.split(r"(?<=.)_|(?=[A-Z])", expand=True)
print(split_result)

# 过滤拆分结果中的空字符串
# 先将展开的结果转换为列表,再过滤空值
split_list = df["str_col"].str.split(r"(?<=.)_|(?=[A-Z])")
filtered_list = [[item for item in sub_list if item != ""] for sub_list in split_list]
print(filtered_list)

拆分结果的后续处理

拆分完成后,我们可能需要将结果保存到原数据框中,或者对拆分后的列进行重命名。可以通过直接赋值的方式将拆分结果添加到原数据框,示例如下:

import pandas as pd

df = pd.DataFrame({
    "str_col": ["abc_DefGhi", "jkl_MnoPqr", "stu_VwxYz"]
})

# 拆分并展开结果
split_df = df["str_col"].str.split(r"_|(?=[A-Z])", expand=True)
# 重命名拆分后的列
split_df.columns = [f"part_{i}" for i in range(split_df.shape[1])]
# 合并到原数据框
df = pd.concat([df, split_df], axis=1)
print(df)

常见注意事项

  • 使用正则拆分时必须设置regex=True,否则Pandas会将传入的字符串当作普通分隔符处理。
  • 正则表达式中的零宽断言不会消耗字符,因此拆分后不会丢失大写字母或者分隔符相邻的内容。
  • 如果字符串中包含多个连续的分隔符,拆分后可能会产生空字符串,需要根据实际业务需求决定是否过滤。
  • 当处理大量数据时,正则拆分的性能会比普通分隔符拆分稍低,如果数据量极大可以考虑先预处理字符串再拆分。
正则拆分的核心是正则表达式的编写,开发者可以根据实际的拆分规则调整正则内容,比如如果需要同时按照多个分隔符拆分,可以将分隔符部分改为[_-]匹配下划线或者横杠。

PythonPandas字符串拆分分隔符大写字母规则修改时间:2026-06-20 21:09:22

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。