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

如何在低版本Pandas中拆分列值并生成新DataFrame

低版本Pandas实现字符串拆分展开的方法

针对你的需求,当Pandas版本过低不支持explode方法时,可以用以下两种方式实现ColB的拆分与ColA的对应展开:

先构造示例数据

import pandas as pd

df = pd.DataFrame({
    'ColA': ['A', 'A', 'B', 'C'],
    'ColB': ['hg_gh | fg_tr | yu_jhd', 'hg_dh | fg_fr', 'hg_th | fg_er | yu_jkd', 'hg_zh | fg_qr']
})

方法1:apply结合pd.Series与stack

# 先拆分ColB的字符串,再通过apply生成对应Series,最后堆叠整理格式
result = (df.assign(ColB=df['ColB'].str.split(' | '))
           .apply(lambda x: pd.Series(x['ColB'], index=[x['ColA']]*len(x['ColB'])), axis=1)
           .stack()
           .reset_index(level=0)
           .rename(columns={0: 'ColB'})
           .reset_index(drop=True))

方法2:列表推导式(高效直观)

这种方式遍历原DataFrame的每一行,拆分后直接构造新数据列表,适合处理大数据量:

rows = []
for _, row in df.iterrows():
    # 按分隔符拆分ColB
    split_vals = row['ColB'].split(' | ')
    # 每个拆分值对应原ColA,添加到列表
    for val in split_vals:
        rows.append({'ColA': row['ColA'], 'ColB': val})

# 转换为目标DataFrame
result = pd.DataFrame(rows)

执行上述任意一种方法后,result即为你需要的展开后DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:25:01