|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
目前想做的就是把八九个excel全部合成为一个excel文件中的多个sheet,sheet名字就是文件名,已经用pandas的循环去写好了,但是每个excel里面都有几千或者几万条数据,数据量有点儿大,想要速度快一点,试过并行,但速度好像没有怎么提高,做完将近两分多钟了,想要最好越快越好。各位鱼油大大有没有什么好点子。
- import glob
- import pandas as pd
- writer = pd.ExcelWriter('总结123.xlsx')
- flist=glob.glob(r".\result\*.xlsx")
- for i in flist:
- df=pd.read_excel(i)
- fname=i.split("\")[-1]
- fname=fname.split(".")[0]
- print(fname)
- df.to_excel(writer, sheet_name=fname, index = False)
- writer._save()
复制代码
- import glob
- import pandas as pd
- from multiprocessing import Pool
- def process_file(file):
- """读取Excel文件并返回数据和文件名"""
- df = pd.read_excel(file)
- fname = file.split("\")[-1].split(".")[0]
- return df, fname
- def main():
- writer = pd.ExcelWriter('总结123.xlsx', engine='xlsxwriter')
- flist = glob.glob(r".\result\*.xlsx")
- # 使用多进程池来并行处理文件
- with Pool() as pool:
- results = pool.map(process_file, flist)
-
- for df, fname in results:
- df.to_excel(writer, sheet_name=fname, index=False)
- writer._save()
- if __name__ == "__main__":
- main()
复制代码
这里提供了一种基于多进程的解决方案。我们使用`multiprocessing`库的`Pool`类来并行读取Excel文件,以提高处理速度。在`process_file`函数中,我们读取每个Excel文件并返回数据和文件名。然后,在`main()`函数中,我们调用`Pool().map()`方法来并行处理文件列表。
注意:通过多进程可能并不能大幅度提升速度,特别是在I/O操作非常耗时的情况下。确保你的硬盘读写速度不成瓶颈,同时也可以尝试将Excel文件转换成其他更高效的格式进行处理。或者考虑使用批处理工具和其他支持直接读取和合并Excel文件的工具来提升效率。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|