如何在Pandas中使用多个字符分割字符串?
Pandas多分隔符字符串分割实现方案
初始数据构造
先构造你提供的初始DataFrame:
import pandas as pd df = pd.DataFrame( data=['String1 - String2', 'This > That', 'One <-> Two'], columns=["Value"] )
初始数据表格:
| Index | Value |
|---|---|
| 0 | String1 - String2 |
| 1 | This > That |
| 2 | One <-> Two |
需求说明
需要以-、>或<->(包含前两种符号的组合)作为分隔符,分割Value列的字符串,新增String1和String2列,最终得到如下结果:
| Index | Value | String1 | String2 |
|---|---|---|---|
| 0 | String1 - String2 | String1 | String2 |
| 1 | This > That | This | That |
| 2 | One <-> Two | One | Two |
实现代码
使用Pandas的str.split结合正则表达式,一次性匹配多种分隔符完成分割:
# 按正则匹配的分隔符分割,仅分割1次并展开为DataFrame split_result = df['Value'].str.split(r'\s*(?:-|>|<->)\s*', n=1, expand=True) # 为分割后的列命名 split_result.columns = ['String1', 'String2'] # 将分割结果与原DataFrame合并 final_df = pd.concat([df, split_result], axis=1)
代码说明
r'\s*(?:-|>|<->)\s*':正则表达式用于匹配分隔符,\s*匹配分隔符前后的任意空格,(?:-|>|<->)精准匹配三种目标分隔符模式n=1:限制仅分割一次,确保每个字符串被拆分为固定的两部分,避免产生多余列expand=True:将分割后的Series转换为DataFrame,方便直接与原数据合并
内容的提问来源于stack exchange,提问作者Winston
相关产品推荐
相关产品推荐

