Jak uniknąć tworzenia indeksu w zapisanym pliku CSV w języku Python / Pandas?

407

Próbuję zapisać plik CSV do folderu po wprowadzeniu pewnych zmian w pliku.

Za każdym razem, gdy używam pd.to_csv('C:/Path of file.csv')pliku csv, ma osobną kolumnę indeksów. Chcę uniknąć drukowania indeksu do csv.

Próbowałem:

pd.read_csv('C:/Path to file to edit.csv', index_col = False)

I aby zapisać plik ...

pd.to_csv('C:/Path to save edited file.csv', index_col = False)

Jednak nadal mam niechcianą kolumnę indeksu. Jak mogę tego uniknąć, kiedy zapisuję moje pliki?

Alexis
źródło
59
spróbuj index=Falsezamiastindex_col
Jeff
Czy możemy tego również użyć w MS Excel?
Nabih Ibrahim Bawazir
Tak, możeszpd.to_excel(r'file.xlsx', index = False)
bfree67
index_coldziała read_html()również dla.
caram

Odpowiedzi:

605

Zastosowanie index=False.

df.to_csv('your.csv', index=False)
Prawdopodobnie rgbkrk
źródło
Żenująco łatwe rozwiązanie, wstydzę się dotrzeć do tego 6 lat później.
peluzza
89

Istnieją dwa sposoby radzenia sobie z sytuacją, w której nie chcemy, aby indeks był przechowywany w pliku csv.

  1. Jak inni stwierdzili, możesz użyć index = False podczas zapisywania
    ramki danych w pliku csv.

    df.to_csv('file_name.csv',index=False)

  2. Lub możesz zapisać swoją ramkę danych taką, jaka jest z indeksem, a podczas czytania po prostu upuść kolumnę bez nazwy 0 zawierającą poprzedni indeks.

    df.to_csv(' file_name.csv ')
    df_new = pd.read_csv('file_name.csv').drop(['unnamed 0'],axis=1)

blitu12345
źródło
1
”i podczas czytania po prostu upuszczasz kolumnę bez nazwy 0 zawierającą poprzedni indeks” lepszym sposobem na to jest określenie pd.read_csv(..., index_col=[0]i uniknięcie dodatkowego wywołania „upuść”.
cs95
30

Jeśli nie chcesz indeksu, przeczytaj plik, używając:

import pandas as pd
df = pd.read_csv('file.csv', index_col=0)

zapisz za pomocą

df.to_csv('file.csv', index=False)
amalik2205
źródło
2
Nie mogę uwierzyć, że nikt nie zauważył błędu. Aby zapisać do csv, byłoby todf.to_csv('file.csv', index=False)
MEdwin
1
Lol nikt nie zwraca uwagi. Dzięki.
amalik2205
22

Jak powiedzieli inni, jeśli nie chcesz przede wszystkim zapisywać kolumny indeksu, możesz użyć df.to_csv('processed.csv', index=False)

Ponieważ jednak dane, których zwykle będziesz używać, same mają jakiś indeks, powiedzmy kolumnę „znacznik czasu”, zatrzymałbym indeks i załadowałbym dane, używając go.

Aby zapisać zaindeksowane dane, najpierw ustaw ich indeks, a następnie zapisz DataFrame:

df.set_index('timestamp')
df.to_csv('processed.csv')

Następnie możesz albo odczytać dane z indeksem:

pd.read_csv('processed.csv', index_col='timestamp')

lub przeczytaj dane, a następnie ustaw indeks:

pd.read_csv('filename.csv')
pd.set_index('column_name')
Lucas P.
źródło
Jeśli ustawię index_col, a następnie zapiszę, nadal będę miał numeryczną nienazwaną kolumnę w pliku CSV. (Python2)
smiller
14

Inne rozwiązanie, jeśli chcesz zachować tę kolumnę jako indeks.

pd.read_csv('filename.csv', index_col='Unnamed: 0')
khaled salah
źródło
1
Właśnie tego szukałem, dziękuję. To w jakiś sposób pomaga w przejrzysty sposób przetłumaczyć pojęcie klucza podstawowego, nawet w przypadku korzystania z csv
Tobbey
7

Jeśli chcesz mieć dobry format, następna instrukcja jest najlepsza:

dataframe_prediction.to_csv('filename.csv', sep=',', encoding='utf-8', index=False)

W tym przypadku masz plik csv z ',' jako osobne kolumny i format utf-8. Ponadto indeks numeryczny nie pojawi się.

Iván Rodríguez
źródło