2016-10-24 11 views
3

У меня есть файл Excel с индексом, который объединен в несколько строк в Excel, и когда я загружаю его в pandas, он читает первую строку как метку индекса, а остальная часть (объединенная клеток) заполняется NaN. Как я могу перебирать индекс так, чтобы он заполнял NaN соответствующим индексом?Как заполнить индекс Pandas NaN

EDIT: Изображение excel удалено по запросу. У меня нет специального кода, но я могу написать пример.

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

Пожалуйста, не ставьте изображения здесь. Прочитайте [как сделать воспроизводимые примеры pandas] (http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples) и поместите здесь дружественный код в буфер обмена. Также используйте код, который вы используете, чтобы прочитать это. – Ivan

ответ

4

Попробуйте это:

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

Смежные вопросы