Как найти неизвестную строку в очень больших пандах DataFrame? [Дубликат]

О производительности:

Новые версии V8 ввели несколько оптимизаций под капотом, а также SpiderMonkey.

почти нет разницы между выражением и декларацией. Функциональное выражение теперь работает быстрее .

Chrome 62.0.3202

FireFox 55

Chrome Canary 63.0.3225

Anonymous функциональные выражения , по-видимому, имеют лучшую производительность по отношению к Named функциональному выражению.

Firefox Chrome Canary Chrome

61
задан root 24 May 2013 в 08:34
поделиться

4 ответа

df['MyColumnName'] = df['MyColumnName'].astype('float64') 
20
ответ дан gobrewers14 21 August 2018 в 12:54
поделиться
  • 1
    Это не работает при преобразовании из String в Float: ValueError: could not convert string to float: 'date' – Jack 19 June 2016 в 14:56
  • 2
    @Jack, знаете ли вы обходной путь здесь? Я сталкиваюсь с этой точной проблемой преобразования строки в float. – Hatt 14 June 2018 в 21:01

ПРИМЕЧАНИЕ: 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
52
ответ дан jpp 21 August 2018 в 12:54
поделиться
  • 1
    Мне пришлось использовать set_levels для преобразования строки в float – denfromufa 29 April 2015 в 18:20
  • 2
    df['ColumnName'] = df['ColumnName'].convert_objects(convert_numeric=True) Вы можете преобразовать только один столбец. – Jack 19 June 2016 в 15:01
  • 3
    теперь это pd.to_numeric (col) в новых версиях – Jeff 19 June 2016 в 16:55
  • 4
    convert_objects устарел в новых пандах. Используйте специальные преобразователи данных типа pd.to_numeric. – Thomas Matthew 23 July 2016 в 23:18
  • 5
    [Д0] pandas.pydata.org/pandas-docs/stable/generated/… – jorijnsmit 11 February 2018 в 16:13

Вы можете попробовать 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])
38
ответ дан root 21 August 2018 в 12:54
поделиться
32
ответ дан Salvador Dali 21 August 2018 в 12:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: