我有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))
如何从“ return pd.read_excel”访问不同的数据框?有没有办法给他们指定具体的名字?我知道我可以访问“ df_list”-但我不知道哪个文件位于哪个数据帧df_list [number]中。
答案 0 :(得分:1)
类似这样的东西,应该返回一个元组列表。
每个元组中的第一个元素代表文件名,第二个是数据帧。本质上,唯一的区别是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()