python pandas 拆分excel表格一行变多行
【摘要】 单元格拆分
原始表格示例:
姓名 | 性别 | 课程 |
张三 | 男 | 语文 数学 物理 |
李四 | 男 | 物理 英语 |
拆分后表格示例:
姓名 | 性别 | 课程 |
张三 | 男 | 语文 |
张三 | 男 | 数学 |
张三 | 男 | 物理 |
李四 | 男 | 物理 |
李四 | 男 | 英语 |
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)