2015-10-13 7 views
2

Я пытаюсь прочитать данные csv из файла архива gzip, который также хранит имя файла архивных данных. Проблема в том, что pandas.read_csv() выбирает имя архивированного файла и возвращает его как самую первую запись данных в возвращенном DataFrame. Как я могу пропустить имя архивного файла? Я просмотрел все доступные опции pandas.read_csv() и не смог найти тот, который позволил бы мне это сделать.Невозможно прочитать данные csv из gzip-сжатого файла, в котором хранится имя архивного файла с Pandas

Вот как я создаю мой архив GZIP в питоне:

import pandas as pn 
import numpy as np 
import tarfile 

a = np.ones((10, 8)) 
np.savetxt('ones.dat', a) 
fh = tarfile.open('ones.tar.gz', 'w:gz') 
fh.add('ones.dat', arcname='numpy_ones.dat') 
fh.close() 

f = pn.read_csv('ones.tar.gz', compression='gzip', sep='\s+', header=None) 
In [32]: f 
Out[32]: 
0 1 2 3 4 5 6 7 8 
0   numpy_ones.dat 1 1 1 1 1 1 1 1 
1 1.000000000000000000e+00 1 1 1 1 1 1 1 NaN 
2 1.000000000000000000e+00 1 1 1 1 1 1 1 NaN 
3 1.000000000000000000e+00 1 1 1 1 1 1 1 NaN 
4 1.000000000000000000e+00 1 1 1 1 1 1 1 NaN 
5 1.000000000000000000e+00 1 1 1 1 1 1 1 NaN 
6 1.000000000000000000e+00 1 1 1 1 1 1 1 NaN 
7 1.000000000000000000e+00 1 1 1 1 1 1 1 NaN 
8 1.000000000000000000e+00 1 1 1 1 1 1 1 NaN 
9      NaN NaN NaN NaN NaN NaN NaN NaN NaN 

Я использую Python 3.4.3 (v3.4.3: 9b73f1c3e601, 23 фев 2015, 02:52:03). Numpy: '1.9.2' Панды: '0.16.2'

Большое спасибо, Маша снова

ответ

2

Использование:

файл обработан
fh = tarfile.open('ones.tar.gz', 'r:gz') 
f = fh.extractfile('numpy_ones.dat') 
df = pd.read_csv(f, delim_whitespace=True, header=None) 
+0

Спасибо так много! Работает как шарм :) –

Смежные вопросы