首页 > 编程知识 正文

python 转Excel二维表为一维表,excel二维转一维

时间:2023-05-05 13:30:10 阅读:276666 作者:3439

今天研究一下使用python怎么把excel二维表转化为一维表。文件名为二维表.xlsx的Sheet1数据源:

二维表.xlsx的Sheet2要实现的结果:

import pandas as pddf=pd.read_excel('二维表.xlsx',sheet_name='Sheet1')

得到数据源的数据帧:

我们再将第一列设置为索引,去掉默认的数字索引:

df1=df.set_index('品名/数量',drop=True)

 结果变成了:

我们再使用DataFrame的stack函数。我们来看一下数据帧stack函数的意思。

意思是将列标题转化为指定水平索引。也就是将横着的列转化为竖着的索引了。使用stack的结果返回的是一个含有多重索引Series.我们试一下例子。代码:

df2=df1.stack()

返回的df2:

已经快接近目标了。df2是一个双重索引的Series.

我们要将这个回到最后的结果,需要在第一层索引加个默认的数值索引即可。有了第一层的索引约束,品名就能完全显示出来了。

代码:df3=df2.reset_index(),就实现了我们要的结果了。

调整一下标题,达到目的:

最后的写入Excel的完整代码,存数据到已经有数据的excel表里注意使用ExcelWriter的写法。不然已经存在的表格都会丢失。我已经翻过车了。写法如下: 

# -*- coding: utf-8 -*-"""Created on Tue Nov 20 13:40:42 2018@author: FanXiaoLei"""import pandas as pdfrom openpyxl import load_workbookdf=pd.read_excel('二维表.xlsx',sheet_name='Sheet1')df1=df.set_index('品名/数量',drop=True)df2=df1.stack()df3=df2.reset_index()df3.columns=['品名','尺寸','数量']wb=load_workbook('二维表.xlsx')writer=pd.ExcelWriter('二维表.xlsx',engine='openpyxl')writer.book=wbwriter.sheets=dict((ws.title,ws) for ws in wb.worksheets)df3.to_excel(writer,sheet_name='Sheet2',index=False)writer.save()

结果实现:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。