2015-05-12 29 views
1

我需要使用第三行作爲數據框的標籤,但保留前兩行用於其他用途。如何將現有數據框上的標籤更改爲現有行?閱讀後使用不同的行作爲熊貓標籤

所以基本上這個數據幀

A B C D 
1 2 3 4 
5 7 8 9 
a b c d 
6 4 2 1 

成爲

a b c d 
6 4 2 1 

我不能只是設置的標頭時,讀取該文件,因爲我需要的前兩行和標籤進行一些處理

+0

我不明白你的意思是「保留前兩行用於其他用途」。你的結果是一行DataFrame。其他兩行發生了什麼? – BrenBarn

+0

它通過'metaData = data [:2]加載到單獨的數據框中' – bischoffingston

回答

1

一種方法是隻是爲了分得一杯羹,然後覆蓋列:

In [71]: 

df1 = df.loc[3:] 
df1.columns = df.loc[2].values 
df1 
Out[71]: 
    a b c d 
3 6 4 2 1 

然後,您可以分配回df感興趣的排片:

In [73]: 

df = df[:2] 
df 
Out[73]: 
    A B C D 
0 1 2 3 4 
1 5 7 8 9 
1

首先將前兩行復制到新的DataFrame中。然後使用第二行中包含的數據重命名列。最後,刪除前三行數據。

import pandas as pd 

df = pd.DataFrame({'A': {0: '1', 1: '5', 2: 'a', 3: '6'}, 
        'B': {0: '2', 1: '7', 2: 'b', 3: '4'}, 
        'C': {0: '3', 1: '8', 2: 'c', 3: '2'}, 
        'D': {0: '4', 1: '9', 2: 'd', 3: '1'}}) 

df2 = df.loc[:1, :].copy() 
df.columns = [c for c in df.loc[2, :]] 
df.drop(df.index[:3], inplace=True) 

>>> df 
    a b c d 
3 6 4 2 1 

>>> df2 
    A B C D 
0 1 2 3 4 
1 5 7 8 9