2014-10-01 25 views
28

için satır sütun başlığına dönüştürme Çalışmam gereken veriler biraz dağınık .. Verilerinin içinde üstbilgi adları vardır. Varolan bir pandalar veri listesinden bir satırı nasıl seçebilirim ve onu bir sütun başlığına dönüştürür (yeniden adlandırır)?Pandas DataFrame,

header = df[df['old_header_name1'] == 'new_header_name1'] 

df.columns = header 

cevap

58
In [21]: df = pd.DataFrame([(1,2,3), ('foo','bar','baz'), (4,5,6)]) 

In [22]: df 
Out[22]: 
    0 1 2 
0 1 2 3 
1 foo bar baz 
2 4 5 6 

2 satırdaki değerleri eşit sütun etiketlerini ayarlayın (dizin konumları 1):

In [23]: df.columns = df.iloc[1] 

Bırak 2. sıra

ben böyle bir şey yapmak istiyorum :

In [24]: df.reindex(df.index.drop(1)) 
Out[24]: 
1 foo bar baz 
0 1 2 3 
2 4 5 6 
+0

Hızlı yanıtınız için çok teşekkür ederim! Başlığı yapmak için dizin konumunun yerine satır satır değerini nasıl seçebilirim? Örneğin sizin örneğiniz için .. df.columns = df [df [0] == 'foo'] –

+0

Buradaki sorun, "foo" 'değerine sahip birden fazla satır olabilir. Bu problemin bir yolu, bu tür ilk satırı açıkça seçmektir: 'df.columns = df.iloc [np.where (df [0] == 'foo') [0] [0]]'. – unutbu

+0

Ah Neden böyle yaptığını görüyorum. Benim durumumda, "foo" değerine sahip tek bir satır olduğunu biliyorum. Yani tamam. Bu şekilde yaptım, sanırım yukarıda bana verdiğin ile aynı. idx_loc = df [df [0] == 'foo'] .dizin.tolist() [0] df.columns = df.iloc [idx_loc] –

7

Bu eser (pandalar v'0.19 .2 '):

df.rename(columns=df.iloc[0]) 
+0

"Başlık" satırını, .drop ekleyerek kaldırabilirsiniz. (df.index [0]) ' – ostrokach