2016-10-24 5 views
3

Ich habe eine Excel-Datei mit einem Index, der über mehrere Zeilen in Excel zusammengeführt wird, und wenn ich es in Pandas laden, liest es die erste Zeile als Index-Label, und der Rest (der fusionierte Zellen) ist mit NaNs gefüllt. Wie kann ich den Index durchlaufen, damit er die NaNs mit dem entsprechenden Index füllt?Wie füllen Pandas Index NaN

EDIT: Bild von Excel entfernt auf Anfrage. Ich habe keinen spezifischen Code, aber ich kann ein Beispiel schreiben.

import pandas as pd 
df = pd.read_excel('myexcelfile.xlsx', header=1) 
df.head() 
        Index-header    Month 
0       Index1     1 
1       NaN      2  
2       NaN      3  
3       NaN      4  
4       NaN      5 
5       Index2     1 
6       NaN      2 
... 
+1

Bitte Bilder nicht hier setzen. Lesen Sie [wie man reproduzierbare Pandas-Beispiele macht] (http://stackoverflow.com/questions/20109391/how-to-make-good-reproductive-pandas-examples) und schreiben Sie hier einen Code für die Zwischenablage. Teilen Sie auch den Code, den Sie verwenden, um dies zu lesen. – Ivan

Antwort

4

Versuchen Sie folgendes:

In [205]: df 
Out[205]: 
    Index-header Month 
0   Index1 1.0 
1   NaN 2.0 
2   NaN 3.0 
3   NaN 4.0 
4   NaN 5.0 
5   Index2 1.0 
6   NaN 2.0 
...   NaN NaN 

In [206]: df['Index-header'] = df['Index-header'].fillna(method='pad') 

In [207]: df 
Out[207]: 
    Index-header Month 
0   Index1 1.0 
1   Index1 2.0 
2   Index1 3.0 
3   Index1 4.0 
4   Index1 5.0 
5   Index2 1.0 
6   Index2 2.0 
...  Index2 NaN 
2
from StringIO import StringIO 
import pandas as pd 

txt = """Index1,1 
,2 
,3 
Index2,1 
,2 
,3""" 

df = pd.read_csv(StringIO(txt), header=None, index_col=0, names=['Month']) 
df 

enter image description here

df.set_index(df.index.to_series().ffill(), inplace=True) 
df 

enter image description here