2016-06-28 3 views
0

У меня есть панд dataframe вроде этого:Панда Dataframe сбросив строки и настройке имен столбцов

 1  2  3 
0 
NaN ingr contr count 
2.0 water 0.02 275 
3.0 oil 0.23 11 
..... 

, и я хотел бы передать его на это:

ingr contr count 
water 0.02 275 
oil 0.23 11 
.... 

Я пытался использовать pd.drop и pd.set_index() и т. д., но я не могу понять, как это сделать. Кто-нибудь может мне помочь?

ответ

1

попробовать iloc индексатор:

In [66]: df 
Out[66]: 
      1  2  3 
NaN ingr contr count 
2.0 water 0.02 275 
3.0 oil 0.23  11 

In [67]: df.columns = df.iloc[0] 

In [68]: df = df.iloc[1:].reset_index() 

In [69]: df 
Out[69]: 
nan index ingr contr count 
0  2.0 water 0.02 275 
1  3.0 oil 0.23 11 

PS, но это было бы гораздо более эффективным, чтобы прочитать данные правильно с самого начала использования header, skiprows и т.д. параметры read_csv()/read_excel/read_table/эт. C функции

+0

Спасибо вам MaxU вы помогли мне с этим! – Papie

+0

Как работает df.iloc? Потому что вы выбрали iloc [0], и это относится к именам столбцов? – Papie

+0

@Papie, как вы читаете ваши данные? Я думаю, что он должен быть исправлен/исправлен во время чтения – MaxU

1

iloc Использование с reset_index и rename_axis (новый в pandas0.18.0):

df.columns = df.iloc[0,:] 
print (df.iloc[1:,:].reset_index().rename_axis(None, axis=1)) 
    0 ingr contr count 
0 2.0 water 0.02 275 
1 3.0 oil 0.23 11 

Если не нужно старый индекс Добавление параметра drop=True:

df.columns = df.iloc[0,:] 
print (df.iloc[1:,:].reset_index(drop=True).rename_axis(None, axis=1)) 
    ingr contr count 
0 water 0.02 275 
1 oil 0.23 11 

Если вам нужен первый столбец как использование индекса set_index:

df.columns = df.iloc[0,:] 
print (df.iloc[1:,:].set_index('ingr').rename_axis(None, axis=1).rename_axis(None)) 
     contr count 
water 0.02 275 
oil 0.23 11 
Смежные вопросы