जवाबों:
नोट:
pd.convert_objectsअब हटा दिया गया है। आप का उपयोग करना चाहिएpd.Series.astype(float)याpd.to_numericअन्य उत्तर में वर्णित है।
यह 0.11 में उपलब्ध है। जबरन रूपांतरण (या नैनो के लिए सेट) यह तब भी काम करेगा जब astypeअसफल हो जाएगा; श्रृंखला द्वारा इसकी श्रृंखला भी है इसलिए यह पूर्ण स्ट्रिंग कॉलम नहीं कहेगा
In [10]: df = DataFrame(dict(A = Series(['1.0','1']), B = Series(['1.0','foo'])))
In [11]: df
Out[11]:
A B
0 1.0 1.0
1 1 foo
In [12]: df.dtypes
Out[12]:
A object
B object
dtype: object
In [13]: df.convert_objects(convert_numeric=True)
Out[13]:
A B
0 1 1
1 1 NaN
In [14]: df.convert_objects(convert_numeric=True).dtypes
Out[14]:
A float64
B float64
dtype: object
df['ColumnName'] = df['ColumnName'].convert_objects(convert_numeric=True)आप सिर्फ एक कॉलम को बदल सकते हैं।
आप कोशिश कर सकते हैं df.column_name = df.column_name.astype(float)। के रूप में NaNमान, आप वे कैसे परिवर्तित किया जाना चाहिए निर्दिष्ट करने की आवश्यकता है, लेकिन आप उपयोग कर सकते हैं .fillnaयह करने के लिए विधि।
उदाहरण:
In [12]: df
Out[12]:
a b
0 0.1 0.2
1 NaN 0.3
2 0.4 0.5
In [13]: df.a.values
Out[13]: array(['0.1', nan, '0.4'], dtype=object)
In [14]: df.a = df.a.astype(float).fillna(0.0)
In [15]: df
Out[15]:
a b
0 0.1 0.2
1 0.0 0.3
2 0.4 0.5
In [16]: df.a.values
Out[16]: array([ 0.1, 0. , 0.4])
पांडा (0.17 और ऊपर) के एक नए संस्करण में, आप to_numeric फ़ंक्शन का उपयोग कर सकते हैं । यह आपको संपूर्ण डेटाफ़्रेम या केवल व्यक्तिगत कॉलम में परिवर्तित करने की अनुमति देता है। यह आपको उन सामानों का चयन करने की क्षमता भी देता है, जो सामान को सांख्यिक मूल्यों में परिवर्तित नहीं कर सकते हैं:
import pandas as pd
s = pd.Series(['1.0', '2', -3])
pd.to_numeric(s)
s = pd.Series(['apple', '1.0', '2', -3])
pd.to_numeric(s, errors='ignore')
pd.to_numeric(s, errors='coerce')
pd.to_numericएक के लिए DataFrame, एक का उपयोग कर सकते हैं df.apply(pd.to_numeric)के रूप में इस जवाब में विस्तार से समझाया ।
df['MyColumnName'] = df['MyColumnName'].astype('float64')
ValueError: could not convert string to float: 'date'
आपको खाली स्ट्रिंग्स ('') को np.nan से बदलना होगा ताकि फ्लोट में कनवर्ट किया जा सके। अर्थात:
df['a']=df.a.replace('',np.nan).astype(float)
यहाँ एक उदाहरण है
GHI Temp Power Day_Type
2016-03-15 06:00:00 -7.99999952505459e-7 18.3 0 NaN
2016-03-15 06:01:00 -7.99999952505459e-7 18.2 0 NaN
2016-03-15 06:02:00 -7.99999952505459e-7 18.3 0 NaN
2016-03-15 06:03:00 -7.99999952505459e-7 18.3 0 NaN
2016-03-15 06:04:00 -7.99999952505459e-7 18.3 0 NaN
लेकिन अगर यह सब स्ट्रिंग मान है ... जैसा कि मेरे मामले में था ... वांछित कॉलम को फ्लोट में बदलें:
df_inv_29['GHI'] = df_inv_29.GHI.astype(float)
df_inv_29['Temp'] = df_inv_29.Temp.astype(float)
df_inv_29['Power'] = df_inv_29.Power.astype(float)
आपके डेटाफ्रेम में अब फ्लोट मान होगा :-)
convert_objects। यह पदावनत है। उपयोगto_numericयाastypeइसके बजाय