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

Python实现单列多值拆分为多行并复制其他列对应数据

解决Python拆分多值列为多行的问题

嘿,作为Python新手处理大型数据集确实有点挠头,但你这个拆分多值列的需求,用Pandas就能轻松搞定——它处理表格数据简直是量身定做的!我给你一步步拆解怎么做:

步骤1:导入Pandas并加载数据

首先得确保你已经装了Pandas(没装的话在终端敲pip install pandas就行),然后把你的数据加载进DataFrame。如果是从CSV/Excel读的话直接用对应的读取方法,这里先拿你给的示例数据来演示:

import pandas as pd

# 构造示例输入数据(实际用的时候换成pd.read_csv/pd.read_excel加载你的文件)
data = {
    'Name': ['Jack', 'Sam', 'Nicole'],
    'Year': [2003, 2004, 2005],
    'Subject': ['Math, Sci, Music', 'Math, PE, Language, Social', 'Math, Life Sci, Geography, Music, Computer Sci'],
    'State': ['MA', 'CA', 'NY']
}

df = pd.DataFrame(data)

步骤2:拆分多值列并展开成多行

核心就两行代码!先把Subject列的字符串按, 分割成列表,再用explode方法把列表拆成单独的行,其他列的对应数据会自动复制:

# 把Subject列的字符串拆分成列表
df['Subject'] = df['Subject'].str.split(', ')
# 将列表展开为多行,自动复制其他列数据
result_df = df.explode('Subject')

# 查看结果(也可以用to_csv/to_excel导出成文件)
print(result_df)

运行之后你得到的结果就完全是你期望的样子:

Name  Year         Subject State
0     Jack  2003            Math    MA
0     Jack  2003             Sci    MA
0     Jack  2003           Music    MA
1      Sam  2004            Math    CA
1      Sam  2004              PE    CA
1      Sam  2004        Language    CA
1      Sam  2004          Social    CA
2    Nicole  2005            Math    NY
2    Nicole  2005        Life Sci    NY
2    Nicole  2005       Geography    NY
2    Nicole  2005           Music    NY
2    Nicole  2005  Computer Sci    NY

额外提示

如果是大型数据集也不用担心,explode是Pandas优化过的方法,效率比自己写循环高太多,完全能应付大文件的处理。要是你拆分后的结果需要导出,直接用result_df.to_csv('输出文件.csv', index=False)就行,index=False是去掉自动生成的索引列,更符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:28:09