2016-06-21 18 views
5

हटाएं कुछ जोकर ने हमारी कंपनी में इंजीनियरिंग मुद्दों को ट्रैक करने के लिए कमल डेटाबेस/एप्लेट चीज़ बना दिया। मजाक यह है कि जानकारी का मुख्य भाग एक विशेष चरित्र के साथ नामित किया गया था ... एक संख्या चिह्न (हैश टैग, पाउंड साइन, \ u0023)।पांडा डेटाफ्रेम कॉलम नाम: विशेष charater

संक्षिप्त नमूना:

KA#   Issue Date  Current Position 
27144  1/9/2014  Accounting 
27194  12/20/2012  Engineering 
32474  4/21/2008  Engineering 
32623-HOLD 4/25/2016  Engineering 
32745  11/13/2012  SEPE 
32812  10/30/2013  Engineering 
32817  12/7/2012  Purchasing 
32839  1/8/2013  SEPE 

मैं एक पांडा dataframe के रूप में एक csv फ़ाइल और python3 में प्रक्रिया के लिए उत्पादन इस तालिका (4K पंक्तियाँ, 15 कॉलम)।

मैं विभिन्न आउटपुट उत्पन्न करता हूं। अगर मैं की तरह कुछ का उपयोग करें:

df.iloc[:,[0,3,1,8,9,10]] 

मैं उपयुक्त उत्पादन प्राप्त करने और प्रमुख स्तंभ "KA#" के रूप में दिखाई देता है। (जब मैं "कुंजी कॉलम" कहता हूं, मेरा मतलब है "सबसे महत्वपूर्ण" ... नहीं "अनुक्रमणिका"। मैं एक सीरियल इंडेक्स रखता हूं)

दुर्भाग्यवश, लोग कभी-कभी मेरे निर्यात के बीच कमल में कॉलम ऑर्डर के साथ गड़बड़ करते हैं ताकि सीएसवी मैं गारंटी नहीं दे सकता कि "KA#" कोई विशेष कॉलम नंबर होगा। मैं स्तंभ नाम का उपयोग करना चाहेंगे:

df.loc[:,["KA#","Issue Date","Current Position"]] 

लेकिन "KA#" स्तंभ NaN के से भरा है।

आपकी सहायता के लिए धन्यवाद।

अंत में, यदि मैं नाम बदलने के लिए कोशिश "KA#" बस "KA" रहे हैं:

df['KA#'].name = 'KA' 

एक KeyError और

df = df.rename(columns={"KA#": "ka"}) 

पूरी तरह से नजरअंदाज कर दिया है फेंकता है। कॉलम "KA#" के रूप में दिखाई देता है।

क्या कोई भी उस प्रतीक से छुटकारा पाने या संभालने का तरीका सोच सकता है? मैं इस बिंदु पर एक regex के लिए भी व्यवस्थित होगा।

आपकी सहायता के लिए धन्यवाद।

उत्तर

5

उपयोग str.replace:
df.columns=df.columns.str.replace('#','')

आप documentation में यह देख सकते हैं।

+1

और विशेष रूप से, इस परिणाम को वापस 'df.columns' पर असाइन करें। – chrisaycock

+0

हाँ आप इसे दस्तावेज़ में देख सकते हैं। – shivsn

+0

इसने मेरी समस्या का ख्याल रखा क्योंकि मेरे पास केवल एक अनुचित चरित्र वाला एक स्तंभ था और मैं चाहता था कि यह चले। इसलिए, "उत्तर दिया"। और shivsn करने के लिए "धन्यवाद"। यदि मैं किसी विशेष कॉलम को लक्षित करना चाहता था, तो यह एक बदसूरत पद्धति होगी। मुझे लगता है कि जब मैं इसे प्राप्त करता हूं तो मैं उस बारे में चिंता करूंगा। –

संबंधित मुद्दे