উত্তর:
দ্রষ্টব্য:
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 এবং তার বেশি), আপনি টু_নামারিক ফাংশনটি ব্যবহার করতে পারেন । এটি আপনাকে পুরো ডেটাফ্রেমে বা কেবল স্বতন্ত্র কলামগুলিতে রূপান্তর করতে দেয়। এটি আপনাকে এমন উপাদানগুলির সাথে কীভাবে আচরণ করতে হয় যা সংখ্যাসূচক মানগুলিতে রূপান্তরিত করা যায় না তা নির্বাচন করার ক্ষমতাও দেয়:
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'
ফ্লোতে রূপান্তর করার আগে আপনাকে খালি স্ট্রিং ('') এনপি.নান দিয়ে প্রতিস্থাপন করতে হবে। অর্থাৎ,
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
পরিবর্তে