How to concatenate multiple pandas.DataFrames without running into MemoryError

后端 未结 10 1361
盖世英雄少女心
盖世英雄少女心 2020-12-24 12:19

I have three DataFrames that I\'m trying to concatenate.

concat_df = pd.concat([df1, df2, df3])

This results in a MemoryError. How can I re

10条回答
  •  爱一瞬间的悲伤
    2020-12-24 13:13

    I advice you to put your dataframes into single csv file by concatenation. Then to read your csv file.

    Execute that:

    # write df1 content in file.csv
    df1.to_csv('file.csv', index=False)
    # append df2 content to file.csv
    df2.to_csv('file.csv', mode='a', columns=False, index=False)
    # append df3 content to file.csv
    df3.to_csv('file.csv', mode='a', columns=False, index=False)
    
    # free memory
    del df1, df2, df3
    
    # read all df1, df2, df3 contents
    df = pd.read_csv('file.csv')
    

    If this solution isn't enougth performante, to concat larger files than usually. Do:

    df1.to_csv('file.csv', index=False)
    df2.to_csv('file1.csv', index=False)
    df3.to_csv('file2.csv', index=False)
    
    del df1, df2, df3
    

    Then run bash command:

    cat file1.csv >> file.csv
    cat file2.csv >> file.csv
    cat file3.csv >> file.csv
    

    Or concat csv files in python :

    def concat(file1, file2):
        with open(file2, 'r') as filename2:
            data = file2.read()
        with open(file1, 'a') as filename1:
            file.write(data)
    
    concat('file.csv', 'file1.csv')
    concat('file.csv', 'file2.csv')
    concat('file.csv', 'file3.csv')
    

    After read:

    df = pd.read_csv('file.csv')
    

提交回复
热议问题