2016-10-27 4 views
2

Ich habe verschiedene Excel-Dateien, die ich mit Pandas verarbeite. Ich muss eine bestimmte Anzahl von Zeilen am Anfang jeder Datei entfernen. Diese zusätzlichen Zeilen könnten leer sein oder sie könnten Text enthalten. Pandas kombiniert einige Zeilen, so dass ich nicht sicher bin, wie viele entfernt werden müssen. Zum Beispiel:Pandas kombiniert leere Zeilen in einer Excel-Datei mit einer einzelnen Zeile im Datenrahmen

Hier ist ein Beispiel Excel-Datei (dargestellt als csv):

,, 
,, 
some text,, 
,, 
,, 
,, 
name, date, task 
Jason,1-Jan,swim 
Aem,2-Jan,workout 

Hier ist mein aktueller Python-Skript:

import pandas as pd 
xl = pd.ExcelFile('extra_rows.xlsx') 
dfs = xl.parse(xl.sheet_names[0]) 
print ("dfs: ", dfs) 

Hier die Ergebnisse sind, wenn ich den Datenrahmen drucken:

dfs:   Unnamed: 0   Unnamed: 1 Unnamed: 2 
0 some other text     NaN  NaN 
1    NaN     NaN  NaN 
2    NaN     NaN  NaN 
3    NaN     NaN  NaN 
4    name     date  task 
5   Jason 2016-01-01 00:00:00  swim 
6    Aem 2016-01-02 00:00:00 workout 

Aus der Datei, würde ich die ersten sechs Reihen entfernen. Aus dem Datenframe würde ich jedoch nur 4 entfernen. Gibt es eine Möglichkeit, die Excel-Datei mit den Daten im Rohzustand einzulesen, so dass die Anzahl der Zeilen konsistent bleibt?

Antwort

2

I verwendet python3 und pandas-0.18.1. Die Excel-Ladefunktion ist pandas.read_csv. Sie können versuchen, den Parameter header=None zu erreichen. Hier sind Beispielcode:

(1) mit Standardparametern, Ergebnis wird führende Leerzeilen ignorieren:

In [12]: pd.read_excel('test.xlsx') 
Out[12]: 
    Unnamed: 0 Unnamed: 1 Unnamed: 2 
0  text1  NaN  NaN 
1  NaN  NaN  NaN 
2   n1   t2   c3 
3  NaN  NaN  NaN 
4  NaN  NaN  NaN 
5  jim  sum  tim 

(2) Mit header=None, Ergebnis werden Leerzeilen halten führt.

In [13]: pd.read_excel('test.xlsx', header=None) 
Out[13]: 
     0 1 2 
0 NaN NaN NaN 
1 NaN NaN NaN 
2 text1 NaN NaN 
3 NaN NaN NaN 
4  n1 t2 c3 
5 NaN NaN NaN 
6 NaN NaN NaN 
7 jim sum tim 
2

Hier ist das, was Sie suchen:

import pandas as pd 
xl = pd.ExcelFile('extra_rows.xlsx') 
dfs = xl.parse(skiprows=6) 
print ("dfs: ", dfs) 

prüfen the docs on ExcelFile für weitere Details.

2

Wenn Sie Ihre Datei mit pd.read_excel lesen und weitergeben header=None sollten die leeren Zeilen enthalten sein:

In [286]: df = pd.read_excel("test.xlsx", header=None) 

In [287]: df 
Out[287]: 
      0  1  2 
0  NaN NaN NaN 
1  NaN NaN NaN 
2 something NaN NaN 
3  NaN NaN NaN 
4  name date other 
5   1  2  3 
Verwandte Themen