एक पांडस डेटाफ्रेम ऑब्जेक्ट में सूचकांक को फिर से परिभाषित करना


84

मैं एक पांडा 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

मैं इस बारे में जा रहा हूं जैसा कि नीचे दिखाया गया है और मुझे गलत उत्तर मिल रहा है। यह कैसे करना है पर कोई सुराग?

>>> 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
— रुईडीसी

जवाबों:


188

आप बस 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

17
सूचकांक नाम को हटाने के लिए, जैसा कि मूल उदाहरण में है: data2.index.name = कोई नहीं
— Daniele

5

यदि आप सूचकांक में 'a' नहीं चाहते हैं

इन:

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.
— यस्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.