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

Python中按分隔符拆分字符串并存储到DataFrame多列的方法

解决方案

单个字符串拆分

直接用split('->')只能得到单个节点的列表,要生成相邻节点对,得先拆分出所有节点,再将相邻节点拼接:

s = "A->B->C->D->E->F"
nodes = s.split('->')
# 用zip配对相邻节点,再拼接成目标格式
result = [f"{a}->{b}" for a, b in zip(nodes, nodes[1:])]
# 输出: ['A->B', 'B->C', 'C->D', 'D->E', 'E->F']

DataFrame批量处理

假设你的DataFrame有一列名为path,按以下步骤生成对应新列:

  1. 定义拆分函数,处理单个路径字符串
  2. 对目标列应用函数,得到包含配对列表的Series
  3. 根据最长配对数生成对应新列,将列表展开为多列

完整代码示例

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    'path': [
        'A->B->C->D->E->F',
        'X->Y->Z',
        'P->Q'
    ]
})

# 定义拆分函数
def split_to_pairs(path_str):
    nodes = path_str.split('->')
    return [f"{prev}->{curr}" for prev, curr in zip(nodes, nodes[1:])]

# 生成配对列表列
df['pairs_list'] = df['path'].apply(split_to_pairs)

# 获取最大配对数量,确定新列数
max_pair_count = df['pairs_list'].str.len().max()

# 将列表展开为多列,列名设为Pair_1、Pair_2...
pair_columns = pd.DataFrame(
    df['pairs_list'].tolist(),
    columns=[f'Pair_{i+1}' for i in range(max_pair_count)]
)

# 合并到原DataFrame并清理临时列
df = pd.concat([df, pair_columns], axis=1).drop('pairs_list', axis=1)

输出结果

pathPair_1Pair_2Pair_3Pair_4Pair_5
A->B->C->D->E->FA->BB->CC->DD->EE->F
X->Y->ZX->YY->ZNaNNaNNaN
P->QP->QNaNNaNNaNNaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:16:02