2013-09-07 4 views
80

क्या मैं पांडा में एक विशिष्ट कॉलम इंडेक्स पर कॉलम डाल सकता हूं?मैं पांडा में एक विशिष्ट कॉलम इंडेक्स पर कॉलम कैसे डालूं?

import pandas as pd 
df = pd.DataFrame({'l':['a','b','c','d'], 'v':[1,2,1,2]}) 
df['n'] = 0 

यह df के अंतिम स्तंभ के रूप में स्तंभ n रखा जाएगा, लेकिन वहाँ एक रास्ता शुरुआत में n डाल करने के लिए df बताने के लिए नहीं है?

उत्तर

142

दस्तावेज़ देख सकेंगे: http://pandas.pydata.org/pandas-docs/stable/dsintro.html#column-selection-addition-deletion

IDX का उपयोग कर = 0 शुरुआत में डाल देगा

df.insert(idx, col_name, value) 

df = pd.DataFrame({'B': [1, 2, 3], 'C': [4, 5, 6]}) 

df 
Out: 
    B C 
0 1 4 
1 2 5 
2 3 6 

idx = 0 
new_col = [7, 8, 9] # can be a list, a Series, an array or a scalar 
df.insert(loc=idx, column='A', value=new_col) 

df 
Out: 
    A B C 
0 7 1 4 
1 8 2 5 
2 9 3 6 
+6

भविष्य उपयोगकर्ताओं के लिए, नए पैरामीटर * "लोक", "कॉलम", * और * "वैल्यू" * हैं। [स्रोत] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.insert.html) –

4

आप सूची के रूप में स्तंभों को निकालने के लिए कोशिश कर सकते इस मालिश के रूप में आप चाहते हैं, और अपने dataframe पुन: अनुक्रमणिका:

>>> cols = df.columns.tolist() 
>>> cols = [cols[-1]]+cols[:-1] # or whatever change you need 
>>> df.reindex(columns=cols) 

    n l v 
0 0 a 1 
1 0 b 2 
2 0 c 1 
3 0 d 2 

संपादित करें: इस एक लाइन में किया जा सकता है; हालांकि, यह थोड़ा बदसूरत लग रहा है। हो सकता है कि कुछ क्लीनर प्रस्ताव आ सकता है ...

>>> df.reindex(columns=['n']+df.columns[:-1].tolist()) 

    n l v 
0 0 a 1 
1 0 b 2 
2 0 c 1 
3 0 d 2 
संबंधित मुद्दे