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

Python中使用str.split或正则将单列拆分为多列的实现方法

问题根因

调用str.split('/',2)未生成多列,是因为pandas的Series.str.split方法默认将拆分结果存储为列表格式的单列,必须传入expand=True参数才会将拆分后的元素展开为独立DataFrame列。另外原数据分隔符/前后存在半角空格,直接用'/'作为分隔符拆分后,内容会残留多余空白字符。

测试数据初始化

先将给出的原始列表转为pandas可处理的DataFrame结构:

import pandas as pd
# 原始方向流量测试数据
raw_list = ['East Bound: 6900 / West Bound: 7700', 'East Bound: 7800 / West Bound: 8700', 'North Bound: 5000 / South Bound: 4900', 'North Bound: 7000 / South Bound: 9000', 'East Bound: 4900 / West Bound: 9700']
df = pd.DataFrame(raw_list, columns=['raw_traffic'])
需求1:拆分为「First Direction」「Second direction」两列

直接指定带空格的分隔符' / '拆分,开启expand=True即可直接生成两列,无多余空白字符:

df[['First Direction', 'Second direction']] = df['raw_traffic'].str.split(' / ', expand=True)

拆分后两列分别存储斜杠前后的完整方向流量段,例如第一行两列值为East Bound: 6900、West Bound: 7700。

需求2:拆分为North/South/East/West四个方向列,无对应值填0

提供两种可直接运行的实现方案,优先推荐正则方案,代码更简洁、大数据量下性能更好:

方案1:正则批量提取(推荐)

无需提前拆分两列,通过正则一次性匹配所有方向和对应数值,再转为宽表即可:

# 正则匹配「方向 Bound: 数值」结构,批量提取方向名和流量值
extract_result = df['raw_traffic'].str.extractall(r'(?P<direction>North|South|East|West) Bound: (?P<flow>\d+)')
# 转为宽表,缺失值填0,数值转为整数类型
flow_cols = extract_result.reset_index(level=1, drop=True).pivot(columns='direction', values='flow').fillna(0).astype(int)
# 合并回原数据表
df = pd.concat([df, flow_cols], axis=1)

运行后会自动生成East、West、North、South四个列,对应方向存在流量时填入提取到的整数值,无对应方向时自动填充0。

方案2:基于str.split二次处理

如果需要完全基于split逻辑实现,可在拆分两列后逐段提取方向和数值,再赋值到对应列:

# 先拆分得到两个方向段临时列
df[['seg1', 'seg2']] = df['raw_traffic'].str.split(' / ', expand=True)

# 定义单段文本的方向、数值提取逻辑
def split_seg(seg_str):
    dir_name, flow_val = seg_str.split(' Bound: ')
    return dir_name, int(flow_val)

# 遍历两个分段,给对应方向列赋值
for seg_col in ['seg1', 'seg2']:
    seg_res = df[seg_col].apply(split_seg)
    for idx, (d, v) in seg_res.items():
        df.loc[idx, d] = v

# 缺失值填0、转整数,删除临时列
df[['North','South','East','West']] = df[['North','South','East','West']].fillna(0).astype(int)
df = df.drop(columns=['seg1', 'seg2'])

两种方案最终输出结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:36:18