python之pandas excel横列转竖列

 大神们看看代码能否优化简洁些,望诸位赐教!

import pandas as pd
data=pd.read_excel('0.xlsx','sheet1')
lieshu=data.shape[1]#取dataframe列的数量
l1=data.iloc[:,[0,1]]#选择第1,2列数值
lie=data.columns.values[1]#按位置提取列标题
xueke=[]#定义xueke列表增加一列学科
for i in l1['姓名']:
    xueke.append(lie)#用成绩列列名填充1列数据
l1=l1.copy()
l1.rename(columns={lie:'成绩'},inplace=True)#改成绩列名统一为‘成绩’,便于合并时同列
l1['学科']=xueke#增加一列并用xueke列表赋值
for ii in range(2,lieshu):#从第3列开始选择1,3列,1,4列.....
    lietemp=data.iloc[:,[0,ii]]
    lie=data.columns.values[ii]#按位置提取列标题
    xueke=[]
    for i in lietemp['姓名']:
        xueke.append(lie)
    lietemp=lietemp.copy()
    lietemp.rename(columns={lie:'成绩'},inplace=True)
    lietemp['学科']=xueke
    l1=pd.concat([l1,lietemp])
print(l1)
#l1=l1.sort_index()
#print(l1)
l1.to_excel('1.xlsx',sheet_name='sheet000',index=False)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值