2017-01-31 6 views
28

क्या मेरी निजी वरीयता के आधार पर पांडा डेटाफ्रेम में कॉलम को पुन: क्रमबद्ध करने का कोई तरीका है (यानी वर्णानुक्रम या संख्यात्मक रूप से सॉर्ट नहीं किया गया है, लेकिन कुछ निश्चित सम्मेलनों का पालन करना)?पांडा डेटाफ्रेम में कॉलम का क्रम सेट करें

सरल उदाहरण:

frame = pd.DataFrame({ 
     'one thing':[1,2,3,4], 
     'second thing':[0.1,0.2,1,2], 
     'other thing':['a','e','i','o']}) 

पैदा करता है इस: करने के लिए

one thing second thing other thing 
0   1   0.1   a 
1   2   0.2   e 
2   3   1.0   i 
3   4   2.0   o 

(कृपया, एक सामान्य समाधान प्रदान करने के बजाय विशिष्ट:

one thing other thing second thing 
0   1   a   0.1 
1   2   e   0.2 
2   3   i   1.0 
3   4   o   2.0 

लेकिन बजाय, मैं इस चाहते हैं इस मामले में बहुत धन्यवाद।)

उत्तर

38

कॉलम नामों में टाइप करके बस ऑर्डर का चयन करें। नोट डबल कोष्ठक:

frame = frame[['column I want first', 'column I want second'...etc.]] 
10

तुम भी df = df[['x', 'y', 'a', 'b']]

import pandas as pd 
frame = pd.DataFrame({'one thing':[1,2,3,4],'second thing':[0.1,0.2,1,2],'other thing':['a','e','i','o']}) 
frame = frame[['second thing', 'other thing', 'one thing']] 
print frame 
    second thing other thing one thing 
0   0.1   a   1 
1   0.2   e   2 
2   1.0   i   3 
3   2.0   o   4 

भी तरह कुछ कर सकता है, आप के साथ स्तंभों की सूची प्राप्त कर सकते हैं:

cols = list(df.columns.values) 

उत्पादन की तरह कुछ का उत्पादन करेगा यह:

['x', 'y', 'a', 'b'] 

जो मैन्युअल रूप से पुनर्व्यवस्थित करना आसान है।

5

तुम भी OrderedDict उपयोग कर सकते हैं:

In [183]: from collections import OrderedDict 

In [184]: data = OrderedDict() 

In [185]: data['one thing'] = [1,2,3,4] 

In [186]: data['second thing'] = [0.1,0.2,1,2] 

In [187]: data['other thing'] = ['a','e','i','o'] 

In [188]: frame = pd.DataFrame(data) 

In [189]: frame 
Out[189]: 
    one thing second thing other thing 
0   1   0.1   a 
1   2   0.2   e 
2   3   1.0   i 
3   4   2.0   o 
8

एक शब्दकोश के बजाय एक सूची के साथ इसे ऐसे बनाएं

frame = pd.DataFrame([ 
     [1, .1, 'a'], 
     [2, .2, 'e'], 
     [3, 1, 'i'], 
     [4, 4, 'o'] 
    ], columns=['one thing', 'second thing', 'other thing']) 

frame 

    one thing second thing other thing 
0   1   0.1   a 
1   2   0.2   e 
2   3   1.0   i 
3   4   4.0   o 
7

आप इस का उपयोग कर सकते हैं:

columnsTitles = ['onething', 'secondthing', 'otherthing'] 

frame.reindex(columns=columnsTitles) 
संबंधित मुद्दे