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?


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)

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)


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)

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')

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')

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.