python - 将 Python 中的 Excel 文件读入内存并将工作表传递给 Pandas
问题描述
我想读入几个熊猫数据框,很多张excel文件。
到目前为止,我使用:
myfile = filename
myfilecomplete = os.path.join(mypath,myfile)
df_data=pd.read_excel(myfilecomplete, sheet_name='DATA',skiprows=4, indexcol=1,usecols="A:i")
Excel 文件中大约有 10 张表格可供读取。所以我重复最后一行 10 次,适用于每张纸:
df_data2=pd.read_excel(myfilecomplete, sheet_name='Whatever',skiprows=3, indexcol=1,usecols="A:O")
ETC...
观察每张纸的读取方式不同(列和起始行)
现在,这个过程需要相当长的时间。excel 文件不是很大(大约 3MB),只有大约 1/3 的表格带有标题。
我正在努力寻找加速这一过程的方法。等待 10 秒太多了,因为这个过程必须由用户连续运行。
有任何想法吗?我认为使用 pd.read_excel 代码每次都访问磁盘以读取工作表,而将 excel 工作表加载到内存中并从那里解析工作表似乎更合乎逻辑。那会有帮助吗?你怎么做呢?
我仍然是初学者,但我听到很多关于并发和并行计算的信息,这对我有帮助吗?
谢谢。
解决方案
您可以一次读取整个文件,ExcelFile
然后从中读取各个工作表。
xlFile = pd.ExcelFile(myfilecomplete)
df_data = pd.read_excel(xlFile, sheet_name='DATA',skiprows=4, indexcol=1,usecols="A:i")
df_data2 = pd.read_excel(xlFile, sheet_name='Whatever',skiprows=3, indexcol=1,usecols="A:O")
推荐阅读
- python - 如何使用 python 套接字获取表单值?
- php - 无法使用 Codeigniter 3 中的电子邮件库发送 AUTH LOGIN 命令错误
- java - 将实时相机预览从 Android APK 客户端流式传输到桌面服务器
- c# - XAML 设计器在程序运行后显示错误并且无法正确显示
- reactjs - Javascript 文件未在 Electron 上更新
- java - 如何解决java中的“流关闭错误”?
- cytoscape.js - 动态添加元素后获取图的当前状态
- java - 为什么我在 Apache Netbeans 12.5 中的项目不能使用 JDK 17 运行?
- logstash - logstash 的关于 unicode delimiter 的 dissect 插件
- python - python:在字典列表中查找