我在Pandas中读写中等大小的excel文件时遇到麻烦。我有5个文件,每个文件的大小约为300 MB。我需要将这些文件合并为一个,进行一些处理,然后保存(最好是excel):
import pandas as pd
f1 = pd.read_excel('File_1.xlsx')
f2 = pd.read_excel('File_2.xlsx')
f3 = pd.read_excel('File_3.xlsx')
f4 = pd.read_excel('File_4.xlsx')
f5 = pd.read_excel('File_5.xlsx')
FULL = pd.concat([f1,f2,f3,f4,f5], axis=0, ignore_index=True, sort=False)
FULL.to_excel('filename.xlsx', index=False)'
但是不幸的是,读取花费了太多时间(大约15分钟左右),并且写入已用完100%的内存(在我的16 GB ram PC上),并且由于花费了太多时间,我不得不中断程序。 有什么办法可以加快读写速度吗?
答案 0 :(得分:3)
In this post,它是一个不错的功能append_df_to_excel()
。
您可以使用该功能逐个读取文件,并将其内容附加到最终的excel文件中。这将节省您的RAM,因为您不会立即将所有文件都保留在内存中。
files = ['File_1.xlsx','File_2.xlsx',...]
for file in files:
df = pd.read_excel(file)
append_df_to_excel('filename.xlsx', df)
根据您的输入文件,您可能需要向该函数传递一些额外的参数。检查链接的帖子以获取更多信息。
请注意,您可以将df.to_csv()
与mode='a'
一起使用,以附加到一个csv文件中。大多数时候,您可以轻松地将excel文件换成csv。如果您也是这种情况,我建议您使用此方法,而不要使用自定义函数。
答案 1 :(得分:1)
不理想(并且取决于用例),但是我总是发现加载XLSX(在Excel中)并将其保存为CSV文件要快得多,因为我倾向于对数据进行多次读取从长远来看,等待XLSX加载所花费的时间超过了转换文件所花费的时间。