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


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.