Search code examples
pythoncsvpandaszip

Create a Zip with 2 CSV on it


I am exporting 2 dataframes as csv, like these ones could be:

data1 = {'isin':['isin1','isin2','isin3'],'ticker_QF':['ticker1','ticker3','ticker3']}

df_QF = pd.DataFrame(data1)

data2 = {'isin':['isin1','isin1','isin2','isin3'],'ticker_BBG':['ticker1','ticker3','ticker4','ticker5']}
df_BBG = pd.DataFrame(data2)

If I want to create a zip foldier with both csv on it, how can I do it? Thanks in advance


Solution

  • You can use Python's zipfile library to help with this as follows:

    import pandas as pd
    import zipfile
    
    data1 = {'isin':['isin1','isin2','isin3'],'ticker_QF':['ticker1','ticker3','ticker3']}
    data2 = {'isin':['isin1','isin1','isin2','isin3'],'ticker_BBG':['ticker1','ticker3','ticker4','ticker5']}
    
    with zipfile.ZipFile('my_csvs.zip', 'w') as csv_zip:
        csv_zip.writestr("data1.csv", pd.DataFrame(data1).to_csv())
        csv_zip.writestr("data2.csv", pd.DataFrame(data2).to_csv())
    

    This would result in one zip file called my_csvs.zip containing two CSV files. Also, the CSV file are created directly inside the ZIP file and no additional files are created.

    Tested in Python 3.7.3