pandas处理excel问题(记录)

1. pandas读取excel合并单元格问题

复制代码
网上查到的都是 df['col'] = df['col'].ffill()
这个能解决大部分简单合并的问题,遇到复杂的就不行了

遇到上图中 有空的情况,ffill() 也会向下填充。

所以不能通过这种方式

python 复制代码
import openpyxl
# 拆分所有的合并单元格,并赋予合并之前的值。
# 由于openpyxl并没有提供拆分并填充的方法,所以使用该方法进行完成
def unmerge_and_fill_cells(worksheet):
    all_merged_cell_ranges = list(
        worksheet.merged_cells.ranges
    )
    for merged_cell_range in all_merged_cell_ranges:
        merged_cell = merged_cell_range.start_cell
        worksheet.unmerge_cells(range_string=merged_cell_range.coord)
        for row_index, col_index in merged_cell_range.cells:
            cell = worksheet.cell(row=row_index, column=col_index)
            cell.value = merged_cell.value
# 读取原始xlsx文件,拆分并填充单元格,然后生成中间临时文件。
def unmerge_cell(filename):
    wb = openpyxl.load_workbook(filename)
    for sheet_name in wb.sheetnames:
        sheet = wb[sheet_name]
        unmerge_and_fill_cells(sheet)
    filename = filename.replace(".xls", "_temp.xls")
    wb.save(filename)
    wb.close()
if __name__ == '__main__':
    unmerge_cell("test.xlsx")

转自https://www.jb51.net/python/2884618do.htm

2. 向下合并excel中每列的重复数据

思路是首先读取循环每行每列的数据,同时创建列表,保存合并单元格信息、上一行的值、上一行的行号。 判断上一行的数据和当行的数据是否一致,一致就保存到列表中,不一致就合并上面保存的单元格,并清空。

但是发现了一个问题,我处理的是33列,9w行的excel数据,用openpyxl库,去执行合并单元格的操作,会很慢,大概执行了15个小时,直接崩溃。

有没有大佬请教一下,有没有办法优化

相关推荐
葡萄城技术团队8 小时前
为什么很多企业最终都会重新评估“自研 Excel”的成本?
excel
三十岁老牛再出发11 小时前
08.18每日总结
c++·python·numpy·pandas
AI刀刀11 小时前
能生成 word 文档的文心在导出时易出现排版错乱,AI 导出鸭精准优化版式,提升文档完整性
人工智能·c#·word·excel·ai导出鸭
AI导出鸭1 天前
怎么让Claude做表格?AI导出鸭苹果版将Claude输出的Markdown表格或结构化列表智能解析为二维数据,一键导出Excel/Word标准表格。
人工智能·chatgpt·word·excel·ai导出鸭
慧都小妮子2 天前
前端实现复杂公式计算:SpreadJS 在京东物流 Udata 平台的落地实践
javascript·数据分析·excel·数据可视化·spreadjs·前端表格控件
葡萄城技术团队3 天前
告别宽表拖拽:SpreadJS 如何让 Web 表格承接 Excel 操作习惯
数据库·html·excel
如意机反光镜裸3 天前
如何合并局域网共享文件夹中的多个 Excel 工作簿?(免 WPS 会员解决方案)
服务器·excel·wps
不剪发的Tony老师3 天前
DuckDB数据分析实战:读写Excel文件
数据分析·excel·duckdb
虎头金猫3 天前
如何在群晖NAS上通过Docker部署CloudSaver?群晖部署CloudSaver教程|聚合资源搜索并实现远程访问
运维·服务器·网络·python·docker·容器·pandas
lengjingzju4 天前
一天掌握Vim,精华使用笔记
笔记·vim·excel