在DataSeries中将Dtype“对象”更改为Dtype“ float64”

时间:2020-05-28 12:22:35

标签: python jupyter-notebook dtype

我正在尝试将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世界索引(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 :(得分:0)

我认为您需要this方法,对于更一般的事情来说非常方便

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

答案 1 :(得分:0)

Pandas使用英文的句点惯例来表示十进制值。用句点替换逗号,然后将列转换为浮点数以解决此问题:

colname = 'MSCI World Index (MXWO) - Index Value'  # just to make the line shorter
MSCI[colname] = MSCI[colname].str.replace(',', '.').astype(float)