python pandas 拆分excel表格一行变多行

举报
lu_zhishen 发表于 2021/03/23 14:10:39 2021/03/23
【摘要】 单元格拆分

原始表格示例:

姓名 性别 课程
张三 语文
数学
物理
李四 物理
英语


拆分后表格示例:

姓名 性别 课程
张三 语文
张三 数学
张三 物理
李四 物理
李四 英语


python 脚本如下:

import pandas as pd
df = pd.read_excel('test.xlsx',sheet_name='Sheet1') # 读取excel值

print(df)

df['课程']=df['课程'].apply(lambda x:x.split('\n')) # 将换行切换成列表

df2= pd.DataFrame(columns = ["姓名", "课程"]) # 构建新的拆分后的df2,只保留两列,方便下面扩展行使用
df2['姓名']=df['姓名']
df2['课程']=df['课程']

import numpy as np
df2=pd.DataFrame({'姓名':df.姓名.repeat(df.课程.str.len()),'课程':np.concatenate(df.课程.values)}) #进行行扩展,姓名列扩展到课程列的倍数,

print(df2)

df3=pd.merge(df,df2,on='姓名') # 根据姓名进行关联合并

print(df3)

最终运行结果如下,可以稍作调整获得拆分后的表格

   姓名 性别          课程_x 课程_y
0  张三  男  [语文, 数学, 物理]   语文
1  张三  男  [语文, 数学, 物理]   数学
2  张三  男  [语文, 数学, 物理]   物理
3  李四  男      [物理, 英语]   物理
4  李四  男      [物理, 英语]   英语
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。