python – 在Pandas中使用多处理读取csv文件的最简单方法

这是我的问题.
随着一堆.csv文件(或其他文件). Pandas是一种简单的方法来读取它们并保存为Dataframe格式.但是当文件量很大时,我想用多处理来读取文件以节省一些时间.

我早期的尝试

我手动将文件分成不同的路径.分别使用:

os.chdir("./task_1)
files = os.listdir('.')
files.sort()
for file in files:
    filename,extname = os.path.splitext(file)
    if extname == '.csv':
        f = pd.read_csv(file)
        df = (f.VALUE.as_matrix()).reshape(75,90)   

然后结合它们.

如何用池运行它们来实现我的问题?
任何建议将不胜感激!

最佳答案
使用池:

import os
import pandas as pd 
from multiprocessing import Pool

# wrap your csv importer in a function that can be mapped
def read_csv(filename):
    'converts a filename to a pandas dataframe'
    return pd.read_csv(filename)


def main():
    # set up your pool
    pool = Pool(processes=8) # or whatever your hardware can support

    # get a list of file names
    files = os.listdir('.')
    file_list = [filename for filename in files if filename.split('.')[1]=='csv']

    # have your pool map the file names to dataframes
    df_list = pool.map(read_csv, file_list)

    # reduce the list of dataframes to a single dataframe
    combined_df = pd.concat(df_list, ignore_index=True)

if __name__ == '__main__':
    main()

转载注明原文:python – 在Pandas中使用多处理读取csv文件的最简单方法 - 代码日志