2014-10-01 20 views
28

के लिए पंक्ति को कॉलम हेडर में कनवर्ट करें मुझे जिस डेटा के साथ काम करना है वह थोड़ा गन्दा है .. इसमें इसके डेटा के अंदर हेडर नाम हैं। मैं मौजूदा पांडा डेटाफ्रेम से एक पंक्ति कैसे चुन सकता हूं और इसे कॉलम हेडर बना सकता हूं?पांडस डेटाफ्रेम,

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

df.columns = header 

उत्तर

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 पंक्ति में मान बराबर करने के लिए स्तंभ लेबल सेट (सूचकांक स्थान 1):

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

ड्रॉप 2 पंक्ति

मैं की तरह कुछ करना चाहता हूँ :

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

आपकी त्वरित प्रतिक्रिया के लिए बहुत बहुत धन्यवाद! मैं इसे हेडर बनाने के लिए इंडेक्स स्थान के स्थिरता में मूल्य द्वारा पंक्ति कैसे चुन सकता हूं? तो आपके उदाहरण के लिए कुछ .. df.columns = df [df [0] == 'foo'] –

+0

इसके साथ समस्या एक से अधिक पंक्ति हो सकती है जिसमें मान '" foo "' है। उस समस्या के आसपास एक तरीका स्पष्ट रूप से पहली ऐसी पंक्ति का चयन करना है: 'df.columns = df.iloc [np.where (df [0] == 'foo') [0] [0]]'। – unutbu

+0

आह मैं देखता हूं कि आपने ऐसा क्यों किया। मेरे मामले में, मुझे पता है कि केवल एक पंक्ति है जिसमें मूल्य "foo" है। तो यह ठीक है। मैंने अभी ऐसा किया है, मुझे लगता है कि यह वही है जैसा आपने मुझे दिया था। idx_loc = df [df [0] == 'foo']। Index.tolist() [0] df.columns = df.iloc [idx_loc] –

7

यह काम करता है (पांडा v'0.19 .2 '):

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

आप '.drop' जोड़कर "हेडर" पंक्ति को हटा सकते हैं (df.index [0]) ' – ostrokach

संबंधित मुद्दे