Mam ramkę danych w pandach, którą chciałbym zapisać do pliku CSV. Robię to za pomocą:
df.to_csv('out.csv')
I pojawia się błąd:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u03b1' in position 20: ordinal not in range(128)
Czy jest jakiś sposób na łatwe obejście tego problemu (tzn. W ramce danych mam znaki Unicode)? I czy istnieje sposób zapisu do pliku rozdzielanego tabulatorami zamiast CSV przy użyciu np. Metody „tab-tab” (której nie sądzę)?
index=False
aby upuścić indeks.Podczas zapisywania
DataFrame
obiektu do pliku csv przy użyciuto_csv
metody, prawdopodobnie nie będzie potrzeby przechowywania poprzedzające indeksy każdego rzędu odDataFrame
obiektu.Można tego uniknąć , przekazując
False
wartość logiczną doindex
parametru.Trochę jak:
Więc jeśli obiekt DataFrame jest podobny do:
Plik csv będzie przechowywać:
zamiast (w przypadku, gdy przekazano wartość domyślną
True
)źródło
df.rename_axis('index_name')
? to nie zmienia samego plikuAby zapisać pand DataFrame w pliku CSV, będziesz potrzebować
DataFrame.to_csv
. Ta funkcja oferuje wiele argumentów z uzasadnionymi ustawieniami domyślnymi, które często trzeba zastąpić, aby dopasować je do konkretnego przypadku użycia. Na przykład możesz użyć innego separatora, zmienić format daty i godziny lub upuścić indeks podczas pisania.to_csv
ma argumenty, które możesz przekazać, aby spełnić te wymagania.Oto tabela zawierająca niektóre typowe scenariusze zapisu do plików CSV i odpowiadające im argumenty, których możesz użyć.
źródło
Jeśli masz problemy z kodowaniem do „utf-8” i chcesz przechodzić komórka po komórce, możesz spróbować czegoś innego.
Python 2
(Gdzie „df” to Twój obiekt DataFrame.)
Więc spróbuj:
Możesz sprawdzić kodowanie kolumn przez:
Ostrzeżenie: błędy = „zignoruj” spowoduje po prostu pominięcie znaku, np
Python 3
źródło
Czasami napotykasz te problemy, jeśli również określisz kodowanie UTF-8. Zalecam określenie kodowania podczas odczytu pliku i takiego samego kodowania podczas zapisu do pliku. To może rozwiązać twój problem.
źródło
Przykład eksportu do pliku z pełną ścieżką w systemie Windows oraz w przypadku, gdy plik ma nagłówki :
Przykład, jeśli chcesz przechowywać w folderze w tym samym katalogu, w którym znajduje się skrypt, z kodowaniem utf-8 i tabulatorem jako separatorem :
źródło
może nie być odpowiedzią na ten przypadek, ale ponieważ miałem ten sam komunikat o błędzie
.to_csv
, próbowałem,.toCSV('name.csv')
a komunikat o błędzie był inny ("SparseDataFrame' object has no attribute 'toCSV'
). Tak więc problem został rozwiązany przez przekształcenie ramki danych w gęstą ramkę danychźródło
.toCSV
a nie.to_csv
. Zapomniałeś podkreślenia