Wie vermeide ich, dass Python / Pandas einen Index in einer gespeicherten CSV erstellen?

407

Ich versuche, eine CSV in einem Ordner zu speichern, nachdem ich einige Änderungen an der Datei vorgenommen habe.

Jedes Mal, wenn ich pd.to_csv('C:/Path of file.csv')die CSV-Datei verwende, gibt es eine separate Indexspalte. Ich möchte vermeiden, den Index auf CSV zu drucken.

Ich habe es versucht:

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

Und um die Datei zu speichern ...

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

Ich habe jedoch immer noch die unerwünschte Indexspalte. Wie kann ich dies vermeiden, wenn ich meine Dateien speichere?

Alexis
quelle
59
versuchen Sie index=Falsestattindex_col
Jeff
Können wir dies auch in ms excel verwenden?
Nabih Ibrahim Bawazir
Ja, Sie könnenpd.to_excel(r'file.xlsx', index = False)
bfree67
index_colfunktioniert auch für read_html().
Karam

Antworten:

605

Verwenden Sie index=False.

df.to_csv('your.csv', index=False)
Wahrscheinlich rgbkrk
quelle
Peinlich einfache Lösung, ich schäme mich, diese 6 Jahre später zu erreichen.
Peluzza
89

Es gibt zwei Möglichkeiten, um mit der Situation umzugehen, in der der Index nicht in einer CSV-Datei gespeichert werden soll.

  1. Wie andere angegeben haben, können Sie index = False verwenden, während Sie Ihren
    Datenrahmen in einer CSV-Datei speichern.

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

  2. Oder Sie können Ihren Datenrahmen so speichern, wie er ist, und beim Lesen löschen Sie einfach die Spalte mit dem Namen 0, die Ihren vorherigen Index enthält. Einfach!

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

blitu12345
quelle
1
"und während Sie lesen, löschen Sie einfach die Spalte mit dem Namen 0, die Ihren vorherigen Index enthält." Ein besserer Weg, dies zu tun, ist anzugeben pd.read_csv(..., index_col=[0]und den zusätzlichen Aufruf "drop" zu vermeiden.
cs95
30

Wenn Sie keinen Index möchten, lesen Sie die Datei mit:

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

Speichern Sie es mit

df.to_csv('file.csv', index=False)
amalik2205
quelle
2
Ich kann nicht glauben, dass niemand den Fehler bemerkt hat. Um auf df.to_csv('file.csv', index=False)
CSV
1
Lol niemand, der aufpasst. Vielen Dank.
Amalik2205
22

Wie bereits erwähnt, können Sie die Indexspalte verwenden, wenn Sie sie überhaupt nicht speichern möchten df.to_csv('processed.csv', index=False)

Da die Daten, die Sie normalerweise verwenden, selbst eine Art Index haben, sagen wir eine 'Zeitstempel'-Spalte, würde ich den Index behalten und die Daten damit laden.

Um die indizierten Daten zu speichern, legen Sie zuerst ihren Index fest und speichern Sie dann den DataFrame:

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

Anschließend können Sie entweder die Daten mit dem Index lesen:

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

oder lesen Sie die Daten und legen Sie dann den Index fest:

pd.read_csv('filename.csv')
pd.set_index('column_name')
Lucas P.
quelle
Wenn ich die index_col dann gespeichert habe, hatte ich immer noch eine numerische unbenannte Spalte in der CSV. (Python2)
Smiller
14

Eine andere Lösung, wenn Sie diese Spalte als Index behalten möchten.

pd.read_csv('filename.csv', index_col='Unnamed: 0')
khaled salah
quelle
1
Genau das, wonach ich gesucht habe, danke. Das hilft irgendwie, das Konzept des Primärschlüssels transparent zu übersetzen, selbst wenn man csv verwendet
Tobbey
7

Wenn Sie ein gutes Format wünschen, ist die nächste Aussage die beste:

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

In diesem Fall haben Sie eine CSV-Datei mit ',' als Trennung zwischen Spalten und utf-8-Format. Außerdem wird der numerische Index nicht angezeigt.

Iván Rodríguez
quelle