numpy.genfromtxt numele coloanelor cu caractere parsare de evacuare incorect

voturi
1

Am citit cantități mari de date dintr-un fișier CSV cu următorul cod

data = np.genfromtxt(inputfile.name, delimiter=',', dtype=float, names=True)

Potrivit docstring, folosind numele de cuvinte cheie cu valoarea reală, implică faptul că datele sunt structurate într-o matrice structurată 1d în cazul în care coloanele fișierului CSV originale sunt accesibile prin numele lor, preluate din primul rând al fișierului.

În timp ce acest lucru funcționează, în general, se pare că șirurile de nume nu sunt analizate ca mi-ar aștepta ca șiruri prime. string r'some“

de exemplu, șirul din fișierul

s = LNAGain(Corner=nom_8;modelFiles=model.paths.scs;cur_ctl_counter=1;vsupply=1.65;temperature=85) Y
#correct

devine analizate ca

s=LNAGain_Cornernom_8modelFilesmodelpathsscscur_ctl_counter1vsupply165temperature85_Y
#wrong

Așa că ratează egalul semne, și paranteze punct și virgulă. Există o modalitate de a forța lectură ca șir brut? Sau este un bug în metoda NumPy?

Dacă am citit doar linia cu

inputfile.readline() 

totul este analizat în mod corect / așa cum vreau.

mulțumesc anticipat!

Întrebat 14/01/2015 la 09:23
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

Am ajuns în jurul problema mea folosind modulul de ursi panda pentru importul csv, în loc de NumPy. A se vedea http://pandas.pydata.org

Se pare că pentru a analiza de text-fișier care conține datele într-un mod mult mai inteligent.

Deci, în loc de a face

import numpy as np
data = np.genfromtxt(inputfile.name, delimiter=',', dtype=float, names=True)

fac

import pandas as pd
data = pd.read_csv(inputfile.name, sep=',')

și totul este în regulă. :)

Desigur, am avut de a edita codul meu de a utiliza metodele de ursi panda pentru manipularea-obiect de date, dar în cazul în care se schimbă minore.

de exemplu, pentru a accesa o coloană de date mi-ar folosi

data[data.columns[column_index]]

in loc de

data[data.dtype.names[column_index]
Publicat 29/01/2015 la 14:40
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more