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

如何拆分DataFrame中多值Name列并复制对应Age行?

拆分DataFrame中多值列并重复对应行的解决方案

样本数据

import pandas as pd
df = pd.DataFrame({'Name':['A,B','C','D','E,F,G'],
                   'Age':[4,6,8,9]})

预期输出

pd.DataFrame({'Name':['A','B','C','D','E','F','G'],
              'Age':[4,4,6,8,9,9,9]})

你已经能通过df['Name'].apply(lambda x : x.split(','))拆分Name列为列表,下面给你两种实用方法,实现将列表元素拆成单独行并重复对应Age值:

方法一:用explode()(推荐,Pandas 0.25及以上版本可用)

这是最简洁的处理方式,直接展开列表列并匹配对应行数据:

# 先将Name列拆分为列表格式
df['Name'] = df['Name'].str.split(',')
# 展开列表为多行,自动重复对应Age值
result = df.explode('Name').reset_index(drop=True)
print(result)

explode会自动把每个列表元素拆成独立行,其他列的数值保持和原行一致,直接得到目标结果。

方法二:兼容旧版Pandas的写法

如果你的Pandas版本较低,可使用这种方式:

# 拆分Name列成多列,再转为多行结构
split_names = df['Name'].str.split(',', expand=True).stack()
# 清理冗余索引并重新命名列
split_names = split_names.reset_index(level=1, drop=True).rename('Name')
# 和原表的Age列合并,生成最终结果
result = df[['Age']].join(split_names).reset_index(drop=True)
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:19:57