दिलचस्प पोस्ट
एनआईटी प्रौद्योगिकियों का प्रयोग करके स्क्रीन के वीडियो रिकॉर्ड करें सी # संकलक क्या इस कोड को अनुकूलित करने के लिए पर्याप्त स्मार्ट है? AngularJS: $ evalAsync vs $ टाइमआउट C ++ स्ट्रिंग के पूर्णांक को परिवर्तित करने के लिए वैकल्पिक (आईओएओ) के लिए? डेटाबेस में सभी उपयोगकर्ताओं के लिए सभी अनुमतियों / एक्सेस खोजने के लिए SQL सर्वर क्वेरी Matlab में, जब यह bsxfun उपयोग इष्टतम है? आप इस सेवा का उपयोग करने के लिए अधिकृत नहीं हैं iTunes ऐप अपलोड त्रुटि जावा – जांचें कि क्या JTextField खाली है या नहीं लूप्स (अजगर) के लिए भिन्न संख्या के साथ फ़ंक्शन HttpServletRequest JSON POST डेटा प्राप्त करें यह लाइन xmlns क्यों है: एंड्रॉइड = "http://schemas.android.com/apk/res/android" लेआउट xml फ़ाइल में पहले होना चाहिए? कोई मान प्राप्त करने के लिए स्ट्रिंग का उपयोग करने के लिए एक सरणी अनुक्रमणिका पथ के रूप में कैसे करें? एमएसआईएसडीएन: क्या यह सिम कार्ड डाटा है? क्यों MSISDN विश्वसनीय नहीं लाने के लिए सभी प्रदान की गई फ़ंक्शन (ब्लैकबेरी और एंड्रॉइड से)? VB कोड से VBProject को असुरक्षित करें पत्र द्वारा पाठ पत्र दिखाएं

पांडा में कॉलम के डेटा प्रकार को बदलें

मैं एक टेबल को परिवर्तित करना चाहता हूं, जिसे पांडस डेटाफ़्रेम में सूचियों की सूची के रूप में दर्शाया गया है। एक अत्यंत सरल उदाहरण के रूप में:

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']] df = pd.DataFrame(a) 

कॉलम को उचित प्रकार के रूप में परिवर्तित करने का सबसे अच्छा तरीका क्या है, इस मामले में कॉलम 2 और 3 में तैरता है? क्या डेटाफ्रेम में कनवर्ट करते समय प्रकार निर्दिष्ट करने का कोई तरीका है? या फिर प्रत्येक कॉलम के प्रकार को बदलने के लिए कॉलम के माध्यम से पहले डेटाफ्रेम और फिर लूप बनाना बेहतर है? आदर्श रूप से मैं इसे एक गतिशील तरीके से करना चाहता हूं क्योंकि सैकड़ों कॉलम हो सकते हैं और मैं यह निर्दिष्ट नहीं करना चाहता कि किस प्रकार के कॉलम हैं मैं गारंटी दे सकता हूं कि प्रत्येक स्तंभ में एक ही प्रकार के मूल्य हैं।

Solutions Collecting From Web of "पांडा में कॉलम के डेटा प्रकार को बदलें"

आप pd.to_numeric (संस्करण 0.17 में शुरू की) एक संख्यात्मक प्रकार के लिए एक स्तंभ या सीरीज़ कन्वर्ट करने के लिए उपयोग कर सकते हैं। कार्यान्वयन का उपयोग करते हुए एक डेटाफ़्रेम के कई कॉलम पर फ़ंक्शन भी लागू किया जा सकता है।

महत्वपूर्ण बात, फ़ंक्शन में एक errors कुंजी शब्द तर्क भी होता है जो आपको ना-संख्यात्मक मानों को NaN लिए मजबूर करने देता है, या इन मूल्यों वाले कॉलमों को अनदेखा कर सकता है।

उदाहरण उपयोग नीचे दिखाए गए हैं

व्यक्तिगत स्तंभ / सीरीज

यहां स्ट्रिंग्स की एक श्रृंखला का उपयोग करते हुए एक उदाहरण है जिसमें ऑब्जेक्ट डीटीपी है:

 >>> s = pd.Series(['1', '2', '4.7', 'pandas', '10']) >>> s 0 1 1 2 2 4.7 3 pandas 4 10 dtype: object 

फ़ंक्शन का डिफ़ॉल्ट व्यवहार बढ़ा है, यदि वह मान को परिवर्तित नहीं कर सकता। इस मामले में, यह स्ट्रिंग 'पांडा' के साथ सामना नहीं कर सकता:

 >>> pd.to_numeric(s) # or pd.to_numeric(s, errors='raise') ValueError: Unable to parse string 

असफल रहने के बजाय, हम चाहते हैं कि 'पंडों' को एक लापता / गलत मान माना जाए। हम निम्नानुसार अमान्य मानों को एनएएन कर सकते हैं:

 >>> pd.to_numeric(s, errors='coerce') 0 1.0 1 2.0 2 4.7 3 NaN 4 10.0 dtype: float64 

तीसरा विकल्प ऑपरेशन की अनदेखी करना है यदि कोई अमान्य मान आता है:

 >>> pd.to_numeric(s, errors='ignore') # the original Series is returned untouched 

एकाधिक स्तंभ / संपूर्ण डेटाफ्रेम

हम इस कार्रवाई को कई कॉलम में लागू करना चाहेंगे। प्रत्येक कॉलम को बदले में प्रसंस्करण कठिन है, इसलिए हम प्रत्येक कॉलम पर फ़ंक्शन कार्य करने के लिए DataFrame.apply का उपयोग कर सकते हैं।

प्रश्न से डेटाफ़्रेम लेना:

 >>> a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']] >>> df = pd.DataFrame(a, columns=['col1','col2','col3']) >>> df col1 col2 col3 0 a 1.2 4.2 1 b 70 0.03 2 x 5 0 

तब हम लिख सकते हैं:

 df[['col2','col3']] = df[['col2','col3']].apply(pd.to_numeric) 

और अब 'col2' और 'col3' की इच्छा के रूप में dtype float64

हालांकि, हमें यह नहीं पता होगा कि हमारे कॉलमों में से कौन-सा कल्प रूप से एक संख्यात्मक प्रकार में कनवर्ट किया जा सकता है। उस मामले में हम बस लिख सकते हैं:

 df.apply(pd.to_numeric, errors='ignore') 

तब फ़ंक्शन पूरे डेटाफ़्रेम पर लागू किया जाएगा। जिन स्तंभों को एक संख्यात्मक प्रकार में कनवर्ट किया जा सकता है, वे परिवर्तित हो जाएंगे, जबकि कॉलम नहीं कर सकते हैं (जैसे कि वे बिना अंकों के स्ट्रिंग या तिथियां रखे जाते हैं) अकेले छोड़ दिए जाएंगे

तिथियों और टाइमस्टैम्प के रूपांतरण के लिए pd.to_timedelta pd.to_datetime और pd.to_timedelta भी है।

मुलायम रूपांतरण

संस्करण 0.21.0 एक डेटाफ्रेम के कॉलम को परिवर्तित करने के लिए विधि infer_objects() प्रस्तुत करता है जिसमें अधिक विशिष्ट प्रकार के ऑब्जेक्ट डेटाटाइप हो।

उदाहरण के लिए, आइए एक ऑब्जेक्ट प्रकार के दो कॉलम के साथ एक डेटाफ्रेम बनाते हैं, एक इंटिजर्स धारण और अन्य धारक स्ट्रिंग्स को पूर्णांक के साथ:

 >>> df = pd.DataFrame({'a': [7, 1, 5], 'b': ['3','2','1']}, dtype='object') >>> df.dtypes a object b object dtype: object 

फिर infer_objects() का उपयोग करते हुए, हम 'a' कॉलम ' infer_objects() ' को बदल सकते हैं:

 >>> df = df.infer_objects() >>> df.dtypes a int64 b object dtype: object 

कॉलम 'बी' अकेला छोड़ दिया गया है क्योंकि इसके मूल्य स्ट्रिंग हैं, पूर्णांक नहीं हैं यदि हम दोनों कॉलमों को पूर्णांक प्रकार में बदलने का प्रयास करना चाहते हैं, तो हम इसके बजाय df.astype(int) उपयोग कर सकते हैं।

इस बारे में कैसा है?

 a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']] df = pd.DataFrame(a, columns=['one', 'two', 'three']) df Out[16]: one two three 0 a 1.2 4.2 1 b 70 0.03 2 x 5 0 df.dtypes Out[17]: one object two object three object df[['two', 'three']] = df[['two', 'three']].astype(float) df.dtypes Out[19]: one object two float64 three float64 

यह एक ऐसा कार्य है जो इसके तर्कों को एक डेटाफ़्रेम और स्तंभों की एक सूची के रूप में लेता है और कॉलम में सभी डेटा को संख्याओं में जोड़ता है।

 # df is the DataFrame, and column_list is a list of columns as strings (eg ["col1","col2","col3"]) # dependencies: pandas def coerce_df_columns_to_numeric(df, column_list): df[column_list] = df[column_list].apply(pd.to_numeric, errors='coerce') 

तो, आपके उदाहरण के लिए:

 import pandas as pd def coerce_df_columns_to_numeric(df, column_list): df[column_list] = df[column_list].apply(pd.to_numeric, errors='coerce') a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']] df = pd.DataFrame(a, columns=['col1','col2','col3']) coerce_df_columns_to_numeric(df, ['col2','col3']) 

कैसे दो डेटाफ्रेम बनाने के बारे में, प्रत्येक उनके डेटा के लिए विभिन्न डेटा प्रकारों के साथ, और फिर उन्हें एक साथ जोड़ते हैं?

 d1 = pd.DataFrame(columns=[ 'float_column' ], dtype=float) d1 = d1.append(pd.DataFrame(columns=[ 'string_column' ], dtype=str)) 

परिणाम

 In[8}: d1.dtypes Out[8]: float_column float64 string_column object dtype: object 

डेटाफ्रेम बनाया जाने के बाद, आप इसे 1 कॉलम में फ्लोटिंग प्वाइंट वैरिएबल्स के साथ, और दूसरे कॉलम में स्ट्रिंग्स (या किसी भी प्रकार का डेटा टाइप कर सकते हैं) के साथ आबाद कर सकते हैं।

यह नीचे कोड कॉलम के डेटाटाइप बदल जाएगा।

 df[['col.name1', 'col.name2'...]] = df[['col.name1', 'col.name2'..]].astype('data_type') 

डेटा प्रकार के स्थान पर आप अपना डेटाटाइप दे सकते हैं। आप स्ट्र, फ्लोट, इत्यादि आदि की तरह क्या चाहते हैं।