2016-01-30 27 views
7

Tôi có số này gz file từ dati.istat.it: bên trong đó là tệp csv (có tên khác) mà tôi muốn tải trực tiếp trong khung dữ liệu gấu trúc.Tải tệp gz trực tiếp vào pandas dataframe

Nếu tôi giải nén với 7zip tôi dễ dàng tải với mã này pd.read_csv("DCCV_OCCUPATIT_Data+FootnotesLegend_175b2401-3654-4673-9e60-b300989088bb.csv", sep="|", engine = "python")

làm thế nào tôi có thể làm điều đó mà không cần giải nén với 7zip But?

thx rất nhiều!

+1

Bạn có thể thử thêm tham số 'nén = 'gzip'' cho 'read_csv' hoặc' nén =' infer'' – jezrael

+0

Cách khác để @jezrael, bạn có thể làm giải nén từ bên trong kịch bản Python của bạn với' subprocess' mô-đun. – boardrider

Trả lời

5

Bạn có thể sử dụng thư viện zipfile:

import pandas as pd 
import zipfile 

z = zipfile.ZipFile('test/file.gz') 
print pd.read_csv(z.open("DCCV_OCCUPATIT_Data+FootnotesLegend_175b2401-3654-4673-9e60-b300989088bb.csv"), 
        sep="|", 
        engine = "python") 

Pandas chỉ hỗ trợ gzipbz2 trong read_csv:

nén: { 'gzip', 'bz2', 'suy luận', Không }, mặc định 'infer'

Để giải nén trực tuyến dữ liệu trên đĩa. Nếu ‘suy luận’, thì hãy sử dụng gzip hoặc bz2 nếu filepath_or_buffer là một chuỗi kết thúc bằng ‘.gz’ hoặc ‘.bz2’, tương ứng và không giải nén theo cách khác. Đặt thành Không để không giải nén.

+0

thx bạn rất nhiều! làm việc rất tốt! :) – SocraM

Các vấn đề liên quan