使用Python压缩csv文件而不合并列?

时间:2018-03-20 08:57:04

标签: python pandas csv zipfile

我需要在python中输出一个csv文件,由于文件太大,我使用'zipfile'包来压缩它。但是,当csv文件输出并解压缩时,列合并......

代码如下:

    for i in dealers:
        data_1=data_dealer[data_dealer['DEALER_ID']==i]
        data=data_1.to_string(index=False, header=True).encode("utf_8_sig")
        azip=zipfile.Zipfile('data%s.zip'%i,mode='w')
        azip.writestr('data%s.csv'%i,data=data,compress_type=zipfile.ZIP_DEFLATED)
        azip.close()

csv最初是(用逗号分隔):

a,1600,2018,NaN,......

现在只有一列,或用空格分隔:

a 1600 2018 NaN ......

任何人都知道如何在不合并列的情况下在Python中压缩csv?

非常感谢!!

1 个答案:

答案 0 :(得分:0)

通过使用Pandas to_string()函数,您创建了一个适合在控制台上显示的文本固定列宽表输出。您希望在列之间创建一个带有,分隔符的CSV输出。因此,您需要使用to_csv()功能。如果没有给函数提供文件名,它会将整个表作为字符串返回。然后可以使用writestr()

传递此内容
for i in dealers:
    data_1 = data_dealer[data_dealer['DEALER_ID']==i]
    data = data_1.to_csv(index=False, header=True).encode("utf_8_sig")
    azip = zipfile.Zipfile('data{}.zip'.format(i), mode='w')
    azip.writestr('data{}.csv'.format(i), data=data, compress_type=zipfile.ZIP_DEFLATED)
    azip.close()