我是靠谱客的博主 从容小甜瓜,最近开发中收集的这篇文章主要介绍python 转Excel二维表为一维表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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

import pandas as pd
df=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 pd
from openpyxl import load_workbook
df=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=wb
writer.sheets=dict((ws.title,ws) for ws in wb.worksheets)
df3.to_excel(writer,sheet_name='Sheet2',index=False)
writer.save()

结果实现:

最后

以上就是从容小甜瓜为你收集整理的python 转Excel二维表为一维表的全部内容,希望文章能够帮你解决python 转Excel二维表为一维表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(78)

评论列表共有 0 条评论

立即
投稿
返回
顶部