多处理熊猫read_excel到数据帧中



我有 6 个.xlsx文件。使用以下代码,我将其中一个存储在名为"df_documents"的数据帧中:

df_documents = pd.read_excel(path_input+name_DOCUMENTSESSENTIAL+fileending_input,
names=column_DOCUMENTSESSENTIAL)

由于 xlsx 文件大小,我做了一些研究来加快速度。多处理是要走的路:

def read_csv(filename):
return pd.read_excel('input/' + filename)

def main():
pool = Pool(processes=8)
files = os.listdir('input/')
file_list = [filename for filename in files if filename.split('.')[1] == 'xlsx']
df_list = pool.map(read_csv, file_list)
print(df_list)

if __name__ == '__main__':
main()
print("--- %s seconds ---" % (time.time() - start_time))

如何从"返回pd.read_excel"访问不同的数据帧?有没有办法给他们起特定的名字?我知道我可以访问"df_list"——但我不知道哪个文件在哪个数据帧中df_list[数字]。

像这样的东西,应该会返回一个元组列表。

其中,每个元组中的第一个元素表示文件名,第二个元素表示数据帧。本质上,唯一的区别是 read_csv 命令上的 return 语句。

import pandas as pd
import numpy as np
import os
import time
from multiprocessing import Pool

def read_csv(filename):
return (filename, pd.read_excel(os.path.join('input', filename))

def main():
start_time = time.time()
pool = Pool(processes=8)
files = os.listdir('input')
file_list = [filename 
for filename in files 
if filename.endswith('.xlsx')]
df_list = pool.map(read_csv, file_list)
print(df_list)
print("--- %s seconds ---" % (time.time() - start_time))

if __name__ == '__main__':
main()

相关内容

  • 没有找到相关文章