2014-09-29 13 views
7

Mam plik CSV uzyskiwać ze zrzutu SQL, która wygląda jak poniżej (pierwsze kilka wierszy z wykorzystaniem głowicy FILE.CSV od terminalu):Importowanie pliku CSV w pand w dataframe pandy

??AANAT,AANAT1576,4 
AANAT,AANAT1704,1 
AAP,AAP-D-12-00691,8 
AAP,AAP-D-12-00834,3 

kiedy użyj polecenia pd.read_csv ('file.csv') Wystąpił błąd "ValueError: Brak kolumn do analizy z pliku".

Jakieś pomysły dotyczące importowania pliku CSV do tabeli i uniknięcia błędu?

OPRACOWANIE pytania (po komentarzu Eda)

Próbowałem header = None, skiprows = 1, aby uniknąć ?? (które pojawiają się przy użyciu polecenia head z terminala).

Ścieżka pliku do wyciągu jest http://goo.gl/jyYlIK

+1

Czy te '' ?? naprawdę w pliku tekstowym? kiedy importuję twoje dane importowane bezbłędnie, możesz wypróbować 'pd.read_csv ('file.csv', header = None)' – EdChum

+0

Dzięki Ed właśnie opracował pytanie - może zabawne kodowanie, ale nie wiesz jak sobie z tym poradzić – user7289

+0

To, czy '?' Powinno tam być, powinno nadal być importowane, chyba że '??' to jakieś dziwne znaki kontrolne. Czy możesz umieścić link do surowego pliku csv, w momencie gdy skopiuję i wkleję twoje dane, mogę je zaimportować, powinieneś być w stanie potwierdzić to swoim końcem, więc może być coś nie tak z Twoim plikiem csv – EdChum

Odpowiedz

11

Więc ?? znaki widoczne są w rzeczywistości znaki niedrukowalne który po patrząc na surowego pliku csv przy użyciu Hex Editor pokazują, że są one w rzeczywistości utf-16 little endian\FFEE który to Bajt-Order-Mark.

Więc wszystko co musisz zrobić, to przekazać to jako typ kodowania i czyta grzywny:

In [46]: 

df = pd.read_csv('otherfile.csv', encoding='utf-16', header=None) 
df 
Out[46]: 
     0    1 2 
0 AANAT  AANAT1576 4 
1 AANAT  AANAT1704 1 
2 AAP AAP-D-12-00691 8 
3 AAP AAP-D-12-00834 3 
4 AAP AAP-D-13-00215 10 
5 AAP AAP-D-13-00270 7 
6 AAP AAP-D-13-00435 5 
7 AAP AAP-D-13-00498 4 
8 AAP AAP-D-13-00530 0 
9 AAP AAP-D-13-00747 3 
+0

Mam zaimplementowane to, co zasugerowałeś, ale także otrzymuję ten sam błąd. –

+0

Niestety nie mogę komentować, jeśli nie podasz rzeczywistych danych, możesz spróbować podać różne kodowania 'utf-8', kluczową sprawą jest sprawdzenie pierwszych kilku bajtów i sprawdzenie, czy pasują one do znanego [znacznika kolejności bajtów] (https://en.wikipedia.org/wiki/Byte_order_mark#Representations_of_byte_order_marks_by_encoding) – EdChum

Powiązane problemy