О производительности:
Новые версии V8
ввели несколько оптимизаций под капотом, а также SpiderMonkey
.
почти нет разницы между выражением и декларацией. Функциональное выражение теперь работает быстрее .
Anonymous
функциональные выражения , по-видимому, имеют лучшую производительность по отношению кNamed
функциональному выражению.
df['MyColumnName'] = df['MyColumnName'].astype('float64')
ПРИМЕЧАНИЕ:
blockquote>pd.convert_objects
теперь устарел. Вы должны использоватьpd.Series.astype(float)
илиpd.to_numeric
, как описано в других ответах.Это доступно в 0.11. Принудительное преобразование (или set to nan) Это будет работать, даже когда
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)
Вы можете преобразовать только один столбец.
– Jack
19 June 2016 в 15:01
Вы можете попробовать 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])
ValueError: could not convert string to float: 'date'
– Jack 19 June 2016 в 14:56