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

2024-10-02 02:25:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有225个文件夹,其中包含~107000.csv的,我想做一些转换,然后导入到一个已经创建的数据帧。你知道吗

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

我当前的代码只处理少量的文件(10k)。然而,对于10万个文件,它的速度会大大减慢,最终会使我的jupyter笔记本/chrome崩溃大约一半,我认为这是因为内存错误(代码也很慢)。我的机器有16GB内存。你知道吗

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

有什么更好的方法来实现这一点?谢谢。你知道吗


Tags: 文件csvpath内存代码from文件夹df

热门问题