2012-05-05 29 views
73

मैंएक पांडा DataFrame में सूचकांक पुनर्परिभाषित आपत्ति

From: 
      a b c 
     0 1 2 3 
     1 10 11 12 
     2 20 21 22 

To : 
      b c 
     1 2 3 
     10 11 12 
     20 21 22 

मैं जैसा कि नीचे दिखाया इस बारे में जा रहा हूँ और गलत जवाब मिल रहा है,, सूचकांक फिर से करने के लिए एक पांडा DataFrame वस्तु कोशिश कर रहा हूँ इसलिए की तरह। यह कैसे करें इस पर कोई संकेत?

>>> col = ['a','b','c'] 
>>> data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col) 
>>> data 
    a b c 
0 1 2 3 
1 10 11 12 
2 20 21 22 
>>> idx2 = data.a.values 
>>> idx2 
array([ 1, 10, 20], dtype=int64) 
>>> data2 = DataFrame(data,index=idx2,columns=col[1:]) 
>>> data2 
    b c 
1 11 12 
10 NaN NaN 
20 NaN NaN 

कोई विचार यह क्यों हो रहा है?

+1

क्योंकि आप दूसरे के निर्माण के लिए 1 DF उपयोग कर रहे हैं, यह केवल पंक्तियों जहां idx2 एक दूसरे को काटना मिल जाएगा data.index, यानी। पंक्ति 1 – RuiDC

उत्तर

177

आप set_index विधि का उपयोग क्यों नहीं करते?

In : col = ['a','b','c'] 

In : data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col) 

In : data 
Out: 
    a b c 
0 1 2 3 
1 10 11 12 
2 20 21 22 

In : data2 = data.set_index('a') 

In : data2 
Out: 
    b c 
a 
1 2 3 
10 11 12 
20 21 22 
+15

इंडेक्स नाम को निकालने के लिए, मूल उदाहरण के रूप में: data2.index.name = कोई नहीं – Daniele

4

आप नहीं करना चाहते हैं 'एक' सूचकांक में

में:

col = ['a','b','c'] 

data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col) 

data 

आउट:

a b c 
0 1 2 3 
1 10 11 12 
2 20 21 22 

में:

data2 = data.set_index('a') 

आउट:

 b c 
a 
1 2 3 
10 11 12 
20 21 22 

में:

data2.index.name = None 

आउट:

 b c 
1 2 3 
10 11 12 
20 21 22 
+1

दूसरा आउट सही नहीं है। बाईं ओर एक अज्ञात कॉलम है जिसमें 0, 1, 2 है। – Yster

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