将100k + .csv导入Pandas的更有效方法

时间:2018-02-19 08:51:01

标签: python pandas

我有225个包含~107,000 .csv的文件夹,我想要进行一些转换,然后导入已经创建的pandas数据帧。

           Main Folder
               |
--------------------------------
|              |               |
subfolder1     sub2    ...    sub225
|              |               |
600 csv's     22 csv's      1400 csv's

我目前的代码使用较少数量的文件(10k)来完成所需的操作。然而,对于100k文件,它会大幅减速并最终崩溃我的jupyter笔记本/ chrome大约一半,我认为是因为内存错误(代码也很慢)。我的机器有16GB RAM。

def data_loader(pair='XYZ'):

    df = get_df()
    path = r'D:\Sample\{}'.format(pair)

    all_files = glob.glob(os.path.join(path, "*.csv"))

    print(pair)

    df_from_each_file = (pd.read_csv(f) for f in all_files)
    dfnew = pd.concat(df_from_each_file, ignore_index=True)

    # Perform data pre-processing that turns the 80k rows into 5 columns.

    return df


for i in range(len(pairs)):
    data_loader(pairs[i])

它为每个子文件夹输出5列并将其添加到当前df中,因此总共将225x5个新列添加到现有df中。

df
original col1 | col2 | subfolder1 cols1|2|3|4|5 .. subfolder225 cols1|2|3|4|5

实施此更好的方法是什么?感谢。

0 个答案:

没有答案