Изменение Dtype "object" на Dtype "float64" в DataSeries - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь преобразовать объект Dtype в Dtype float64. Пожалуйста, просмотрите ниже df и информацию перед преобразованием:

df before conversion

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 101 entries, 2012-01-31 to 2020-05-27
Data columns (total 1 columns):
 #   Column                                 Non-Null Count  Dtype 
---  ------                                 --------------  ----- 
 0   MSCI World Index (MXWO) - Index Value  101 non-null    object
dtypes: object(1)

Затем я применил эту строку кода для преобразования столбца «MSCI World Индекс (MXWO) - значение индекса "в float64:

MSCI['MSCI World Index (MXWO) - Index Value']=pd.to_numeric(MSCI['MSCI World Index (MXWO) - Index Value'],errors='coerce')

Когда я вызываю df, я получаю следующий результат:

df after conversion

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 101 entries, 2012-01-31 to 2020-05-27
Data columns (total 1 columns):
 #   Column                                 Non-Null Count  Dtype  
---  ------                                 --------------  -----  
 0   MSCI World Index (MXWO) - Index Value  0 non-null      float64
dtypes: float64(1)

Какие изменения мне нужно сделать в коде, чтобы значения отображались правильно, чтобы я мог выполнять вычисления с использованием значений?

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Pandas использует английское sh соглашение о точках для обозначения десятичных значений. Замените запятые точками, а затем преобразуйте столбец в числа с плавающей запятой, чтобы исправить это:

colname = 'MSCI World Index (MXWO) - Index Value'  # just to make the line shorter
MSCI[colname] = MSCI[colname].str.replace(',', '.').astype(float)
0 голосов
/ 28 мая 2020

Думаю, вам понадобится этот метод, очень удобный для более общих вещей

col_name = 'MSCI World Index (MXWO) - Index Value'
df[col_name].str.replace(',', '.', regex=True).astype(float)
...