Python concat目录中的多个大文件导致内存错误

Python concat目录中的多个大文件导致内存错误,python,pandas,Python,Pandas,我想从一个目录中包含50个txt文件,每个都有>300 MB的空间。下面的函数适用于其中两个文件,但不适用于所有文件。我对python非常陌生,因此我不确定我的函数是否可以更快。我已经尝试过类似的话题,但找不到更好的方法。你有办法提高效率吗 我的concat文件脚本: def txtComponentstoOne(rdire): path=rdire allFiles=glob.glob(os.path.join(path,"*.txt")) df = pd.concat

我想从一个目录中包含50个txt文件,每个都有>300 MB的空间。下面的函数适用于其中两个文件,但不适用于所有文件。我对python非常陌生,因此我不确定我的函数是否可以更快。我已经尝试过类似的话题,但找不到更好的方法。你有办法提高效率吗

我的concat文件脚本:

def txtComponentstoOne(rdire):
    path=rdire
    allFiles=glob.glob(os.path.join(path,"*.txt"))
    df = pd.concat((pd.read_table(f, header=None, dtype={0:str,1:int,2:int,3:str, 4:str, 5: int, 6:int}) for f in allFiles),ignore_index=True)
    return df

我的总体目标是用其他列中相同的值计算每行第6列的中值。因此,如果您知道如何在不使用concate文件的情况下执行此操作,也可以解决我的问题。

如果您需要中位数的精确值,则需要存储基本上所有的数据,或至少一半的数据(请参阅)。如果你能够接受中值的估计,那么可能会有一些增量方法,不需要你同时将所有内容都存储在内存中。你也可以一次只做一列(只加载一列),如果这足以减少数据量的话。如果你只使用每个帧的部分数据,你应该在加载每个文件后立即明确过滤数据,然后在单个帧中连接它。我不确定在连接之前如何过滤数据,由于文件的大小略有不同,我假设它们的行数不相同。我在考虑将0-5列合并为一列。这会以任何方式改变大小吗?我设法将Linux服务器上的文件与“cat*>mergedfile.txt”(16GB)组合在一起,但我仍在寻找一种方法,根据其他列获得中值。在python中,我使用了groupby()[6]