资讯专栏INFORMATION COLUMN

excel交叉表的数据清理

jzman / 1372人阅读

摘要:之前在做一个的简单教程的时候站的一个简单教程当时演示应该把交叉表图转换成数据表格图的形式。但是在里没有直接实现这个需求的函数,的包有一个可以实现这功能,但是,毕竟是。

之前在做一个excel的简单教程的时候:
B站的一个Excel简单教程

当时演示应该把交叉表(图1)转换成数据表格(图2)的形式。

但是在excel里没有直接实现这个需求的函数,R的tidyr包有一个spread可以实现这功能,但是,毕竟是R。

python同样可以实现这个需求,借助openpyxl这个包和excel互动,然后用一点代码就可以完成了:

from openpyxl import Workbook,load_workbook
from openpyxl.utils import get_column_letter
wb = load_workbook("测试.xlsx")
ws = wb.active
rcList = tuple(ws.rows)
print(rcList)
def spreadIt(rcList,rowVarName="var1",colVarName="var2",cellVarName="var3"):
    rLength = len(rcList)
    cLength = len(rcList[0])
    rst = [[rowVarName,colVarName,cellVarName]]
    for i in range(1,rLength):
        for j in range(1,cLength):
            rst.append([rcList[i][0].value, rcList[0]
                        [j].value, rcList[i][j].value])
    return rst

def write2Sheet(spreaded,worksheet):
    for i in range(len(spreaded)):
        for j in range(len(spreaded[0])):
            worksheet["%s%d"%(get_column_letter(j+1),i+1)]=spreaded[i][j]

wbNew = Workbook()
wsNew = wbNew.active
write2Sheet(spreadIt(rcList,rowVarName="节数",colVarName="星期",cellVarName="课程"),wsNew)

wbNew.save(filename="test.xlsx")

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41816.html

相关文章

  • Python 读写excel文件

    摘要:查找了一下,可以操作表的几个库有以下几个这个是推荐使用的库,可以读写以上格式,以结尾的文件。这个支持读取数据,支持以结尾的文件,也就是比较老的格式。这个和上面的相对应,支持写入书和格式化数据,支持结尾的文件格式。 最近需要用到Python来操作excel表,读取表格内容到数据库。所以就搜索了相关资料。查找了一下,可以操作excel表的几个库有以下几个: openpyxl 这个是推荐使用...

    plus2047 评论0 收藏0
  • EasyExcel为单个Cell设置样式

    摘要:是阿里巴巴对封装的一个库,号称解决了的问题,并且在使用上也更方便一些然而我在使用的时候发现还是有很多坑,其中一个比较头疼的是对单个单元格样式的设置。 EasyExcel是阿里巴巴对POI封装的一个库,号称解决了POI的OOM问题,并且在使用上也更方便一些Github:[](https://github.com/alibaba/ea... 然而我在使用的时候发现还是有很多坑,其中一个比...

    roundstones 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<