2015-10-14 5 views
19

मैं अपने कोड में इस लाइन जो संख्यात्मक करने के लिए अपने डेटा धर्मान्तरित है ...पांडा ".convert_objects (convert_numeric = सच)" पदावनत

data["S1Q2I"] = data["S1Q2I"].convert_objects(convert_numeric=True) 

बात यह है कि अब नए पांडा रिलीज (0.17.0

FutureWarning: convert_objects is deprecated. 
Use the data-type specific converters pd.to_datetime, 
pd.to_timedelta and pd.to_numeric. 
data["S3BD5Q2A"] = data["S3BD5Q2A"].convert_objects(convert_numeric=True) 

तो, मैं नई प्रलेखन के पास गया और मैं कैसे नए कार्य को उपयोग करने के लिए अपने डेटा परिवर्तित करने के लिए किसी भी उदाहरण नहीं मिल सकता है:) ने कहा कि इस समारोह का बहिष्कार कर रहा है .. यह त्रुटि है। ..

यह केवल यह कहता है:

"DataFrame.convert_objects has been deprecated in favor of type-specific functions pd.to_datetime, pd.to_timestamp and pd.to_numeric (new in 0.17.0) (GH11133)."

कोई भी मदद अच्छी होगी!

+1

तुम्हारा मतलब है [इस] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_timedelta .html) और [यह] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_numeric.html#pandas.to_numeric)? आप क्या करने की उम्मीद कर रहे हैं/नहीं करते? – EdChum

+6

यह सिर्फ यह है: 'डेटा [' S1Q2I '] = pd.to_numeric (डेटा [' S1Q2I ']) ' –

+0

धन्यवाद! अब मैं समझ गया!! – guidebortoli

उत्तर

11

टिप्पणी में @EvanWright द्वारा समझाया,

data['S1Q2I'] = pd.to_numeric(data['S1Q2I']) 

अब प्रकार परिवर्तित करने का पसंदीदा तरीका है। परिवर्तन में एक विस्तृत स्पष्टीकरण जिथब पीआर GH11133 में पाया जा सकता है।

4

आप here के रूप में आवेदन का उपयोग करके प्रतिस्थापन को प्रभावित कर सकते हैं। एक उदाहरण होगा:

>>> import pandas as pd 
>>> a = pd.DataFrame([{"letter":"a", "number":"1"},{"letter":"b", "number":"2"}]) 
>>> a.dtypes 
letter object 
number object 
dtype: object 
>>> b = a.apply(pd.to_numeric, errors="ignore") 
>>> b.dtypes 
letter object 
number  int64 
dtype: object 
>>> 

लेकिन यह दो तरह से बेकार है:

  1. आप बल्कि एक गैर देशी dataframe विधि की तुलना में
  2. आप किसी अन्य dataframe-- को कॉपी करने के लिए है लागू उपयोग करने के लिए जगह में नहीं किया जा सकता है। "बड़े डेटा" के साथ उपयोग के लिए बहुत कुछ।

मैं वास्तव में दिशा पांडा जा रहा हूँ प्यार नहीं कर रहा हूँ। मैंने आर डेटाटेबल का उपयोग नहीं किया है, लेकिन अब तक यह बेहतर लगता है।

मुझे लगता है कि देशी, इन-प्लेस प्रकार रूपांतरण के साथ एक डेटा तालिका प्रतिस्पर्धी डेटा विश्लेषण ढांचे के लिए काफी बुनियादी है।

0

आप इस प्रकार का अलग dataframe में कॉपी करने के लिए बिना यह एक dataframe में एक विशेष चर नाम करने के लिए सही ढंग से लागू करने के लिए प्राप्त कर सकते हैं:

>>> import pandas as pd 
>>> a = pd.DataFrame([{"letter":"a", "number":"1"},{"letter":"b", "number":"2"}]) 
>>> a.dtypes 
letter object 
number object 
dtype: object 
>>> a['number'] = a['number'].apply(pd.to_numeric, errors='coerce') 
>>> a.dtypes 
letter object 
number  int64 
dtype: object 

ऊपर मूल प्रश्न के आधार पर एक उदाहरण की तरह कुछ होगा:

data['S1Q2I'] = data['S1Q2I'].apply(pd.to_numeric, errors='coerce') 

यह अपने मूल रूप में एक ही तरह से काम करता है:

data['S1Q2I'] = data['S1Q2I'].convert_objects(convert_numeric=True) 

मेरे हाथों में, वैसे भी ....

यह डेटाटाइप को डालने वाले बिंदु abalter को संबोधित नहीं करता है जो मेरे सिर से थोड़ा ऊपर है मुझे डर है!

+0

आह मैंने अभी चर्चा [यहां] (https://github.com/pandas-dev/pandas/issues/11221) पढ़ी है और अब सीमाओं की सराहना की है। ज्यादा कष्टदायी। लेकिन, यदि आपके पास एक विशेष डेटाफ्रेम कॉलम है जिसे आप कन्वर्ट करना चाहते हैं, तो यह है कि आप इसे कैसे कर सकते हैं। – magsmanston

2

यह पांडों के किस संस्करण पर निर्भर करता है ...... यदि आपके पास पांडस का संस्करण 0.18.0 है तो यह प्रकार काम करेगा ........

df['col name'] = df['col name'].apply(pd.to_numeric, errors='coerce') 

एक और संस्करण ........

df['col name']=df.col name .astype(float) 
संबंधित मुद्दे