Überspringen Sie Zeilen während des CSV-Imports von Pandas


97

Ich versuche, eine CSV-Datei mit pandas.read_csv()zu importieren, möchte jedoch nicht die zweite Zeile der Datendatei importieren (die Zeile mit dem Index = 1 für die 0-Indizierung).

Ich kann nicht sehen, wie ich es nicht importieren soll, da die mit dem Befehl verwendeten Argumente nicht eindeutig sind:

Von der Pandas-Website:

skiprows : list-like oder integer

Zu überspringende Zeilennummern (0-indiziert) oder Anzahl der zu überspringenden Zeilen (int) am Anfang der Datei. "

Wenn ich skiprows=1die Argumente eingebe, woher weiß es, ob die erste Zeile oder die Zeile mit Index 1 übersprungen werden soll?


2
Ich würde vermuten, dass es, wie es heißt, "listenartig oder ganzzahlig" sein kann und Ihnen dann zwei Optionen bietet (entweder Zeilen überspringen oder # Zeilen am Anfang überspringen). Wenn Sie ihm dann die Liste [1] geben, wird nur die Zeile übersprungen 1 (2. Reihe). Wenn Sie ihm eine Ganzzahl gegeben hätten (zum Beispiel 10), würde er die ersten 10 Zeilen überspringen.
Ffisegydd

1
Großartig, dass es funktioniert hat. Vielen Dank. Ich habe mich nur gefragt, wie es zwischen dem Index und int unterscheiden würde. [] ist die Antwort.
Thosphor

Antworten:


144

Sie können es selbst versuchen:

>>> import pandas as pd
>>> from StringIO import StringIO
>>> s = """1, 2
... 3, 4
... 5, 6"""
>>> pd.read_csv(StringIO(s), skiprows=[1], header=None)
   0  1
0  1  2
1  5  6
>>> pd.read_csv(StringIO(s), skiprows=1, header=None)
   0  1
0  3  4
1  5  6

Ja, danke, ich musste nur wissen, dass der Index in eckigen Klammern angegeben wurde [].
Thosphor

11
in Python 3: from io import StringIO
Dima Lituiev

^ Es muss überhaupt nicht importiert werden, es ist direkt zugänglich als pd.compat.StringIO .
CS95

30

Ich habe noch keinen Ruf zu kommentieren, aber ich möchte die Antwort von alko als weitere Referenz hinzufügen .

Aus den Dokumenten :

skiprows: Eine Sammlung von Zahlen für Zeilen in der Datei, die übersprungen werden sollen. Kann auch eine Ganzzahl sein, um die ersten n Zeilen zu überspringen


14

Ich habe das gleiche Problem beim Ausführen der Skiprows beim Lesen der CSV-Datei. Ich habe skip_rows = 1 gespendet, das wird nicht funktionieren

Ein einfaches Beispiel gibt eine Vorstellung davon, wie beim Lesen von CSV-Dateien Skiprows verwendet werden.

import pandas as pd

#skiprows=1 will skip first line and try to read from second line
df = pd.read_csv('my_csv_file.csv', skiprows=1)  ## pandas as pd

#print the data frame
df

1

Bei all diesen Antworten fehlt ein wichtiger Punkt: Die n-te Zeile ist die n-te Zeile in der Datei und nicht die n-te Zeile im Datensatz. Ich habe eine Situation, in der ich einige veraltete Daten zur Stromstärke von der USGS herunterlade. Der Kopf des Datensatzes wird mit '#' kommentiert, die erste Zeile danach sind die Beschriftungen, als nächstes folgt eine Zeile, die die Datumstypen beschreibt, und zuletzt die Daten selbst. Ich weiß nie, wie viele Kommentarzeilen es gibt, aber ich weiß, was die ersten paar Zeilen sind. Beispiel:

----------------------------- WARNUNG -------------------- --------------

Einige der Daten, die Sie aus dieser US Geological Survey-Datenbank erhalten haben

Möglicherweise wurde die Genehmigung des Direktors nicht erteilt. ... agentur_cd site_no datetime tz_cd 139719_00065 139719_00065_cd

5s 15s 20d 6s 14n 10s USGS 08041780 2018-05-06 00:00 CDT 1.98 A.

Es wäre schön, wenn es eine Möglichkeit gäbe, die n-te Zeile sowie die n-te Zeile automatisch zu überspringen.

Als Hinweis konnte ich mein Problem beheben mit:

import pandas as pd
ds = pd.read_csv(fname, comment='#', sep='\t', header=0, parse_dates=True)
ds.drop(0, inplace=True)

-1

skip[1] überspringt die zweite Zeile, nicht die erste.


-8

Stellen Sie außerdem sicher, dass Ihre Datei tatsächlich eine CSV-Datei ist.Wenn Sie beispielsweise eine XLS-Datei hatten und einfach die Dateierweiterung in CSV geändert haben, wird die Datei nicht importiert und gibt den obigen Fehler aus. Um zu überprüfen, ob dies Ihr Problem ist, öffnen Sie die Datei in Excel und es wird wahrscheinlich Folgendes angezeigt:

"Das Dateiformat und die Erweiterung von 'Filename.csv' stimmen nicht überein. Die Datei könnte beschädigt oder unsicher sein. Wenn Sie ihrer Quelle nicht vertrauen, öffnen Sie sie nicht. Möchten Sie sie trotzdem öffnen?"

So beheben Sie die Datei: Öffnen Sie die Datei in Excel, klicken Sie auf "Speichern unter", wählen Sie das zu speichernde Dateiformat aus (verwenden Sie .cvs) und ersetzen Sie die vorhandene Datei.

Dies war mein Problem und hat den Fehler für mich behoben.


9
Dies mag Ihr Problem gewesen sein, hat aber nichts mit der Frage zu tun und versucht auch nicht, sie zu beantworten. Es erklärt einfach ein anderes zusätzliches Problem, das Sie hatten. Sie könnten auch sagen "Denken Sie auch daran, Ihren Laptop aufzuladen, meiner hatte keinen Akku und ich habe alle meine Änderungen verloren. Das war mein Problem"
JC Rocamonde
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.