2015-10-19 13 views
5

के भीतर कॉलम ले जाएं मैंने सीएसवी फ़ाइल से 25000 से अधिक पंक्तियों और 15 कॉलम वाले डेटा फ्रेम में डेटा पढ़ा है और मुझे सभी पंक्तियों (बाएं-सबसे -> अनुक्रमणिका सहित) को एक कॉलम में स्थानांतरित करने की आवश्यकता है ठीक है, ताकि मुझे खाली इंडेक्स मिल सके और इसे पूर्णांक से भरने में सक्षम हो। कॉलम के नाम, हालांकि, एक ही स्थान पर रहना चाहिए। तो, मूल रूप से मुझे स्तंभ नामों को दाईं ओर एक स्थान को छोड़कर सबकुछ स्थानांतरित करने की आवश्यकता है।पांडस डेटा फ्रेम

enter image description here

मैं इसे पुन: अनुक्रमणिका करने की कोशिश की है, लेकिन एक त्रुटि मिली:

ValueError: cannot reindex from a duplicate axis 

वहाँ यह करने के लिए कोई तरीका है?

df['new'] = df.index 

एक सूची के साथ की तुलना में अपने dataframe के स्तंभों के नाम ले:

उत्तर

4

मैं पहली बार एक नया कॉलम जोड़ना होगा

colnames = df.columns.tolist() 

तो फिर तुम उन्हें पुन: व्यवस्थित कर सकते हैं आप की जरूरत के रूप में उदाहरण के लिए, ऑर्डर को बदलने के लिए, आपको पहले के रूप में अंतिम 'नया' कॉलम मिलता है और अवशेषों को दायीं तरफ ले जाता है:

colnames = colnames[-1:] + colnames[:-1] 

और पुन: असाइन:

df = df[colnames] 
+0

मैं इसे अद्यतन किया है, अब इसे और अधिक स्पष्ट है। – puk789

9

पांडा में आप केवल, दाईं ओर एक स्तंभ बना सकते हैं जब तक आप दो dataframe के बीच में शामिल होने है। फिर आप फिर से व्यवस्थित कर सकते हैं हालांकि आपको पसंद है।

import pandas as pd 

df = pd.read_csv('data.csv', header=None, names = ['A','B','C']) 

print(df) 

    A B C 
0 1 2 3 
1 4 5 6 
2 7 8 9 
3 10 11 12 

df['D'] = pd.np.nan # this creates an empty series 
        # and appends to the right 

print(df) 

    A B C D 
0 1 2 3 NaN 
1 4 5 6 NaN 
2 7 8 9 NaN 
3 10 11 12 NaN 

df = df[['D','A','B','C']] # rearrange as you like 

print(df) 

    D A B C 
0 NaN 1 2 3 
1 NaN 4 5 6 
2 NaN 7 8 9 
3 NaN 10 11 12 
+0

'df ['D'] = pd.np.nan' पर्याप्त है, 'df [' डी '] = pd.Series (डेटा = कोई नहीं, अनुक्रमणिका = df.index)' के बजाय पर्याप्त होगा? – Zero

+0

धन्यवाद, अपडेट किया गया। – Leb

+0

मैंने इसे अपडेट किया है, अब यह और स्पष्ट है। – puk789

0
df = YourDataFrame 
col = "Your Column You Want To Move To The Start Of YourDataFrame" 
df = pd.concat([df[col],df.drop(col,axis=1)], axis=1) 
संबंधित मुद्दे