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
相关产品推荐
相关产品推荐

