数据列值不会更改为float

时间:2017-10-12 12:13:33

标签: python pandas dataframe data-analysis

我有一个数据框,

df,
    Name    Stage   Description
0   sri      1      sri is one of the good singer in this two
1   nan      2      thanks for reading
2   ram      1      ram is two of the good cricket player
3   ganesh   1      one driver
4   nan      2      good buddies

tried df["Stage"]=pd.to_numeric(df["Stage"],downcast="float")

但值仍然相同

2 个答案:

答案 0 :(得分:3)

我认为你需要astype

df["Stage"]=df["Stage"].astype(float)

如果第一个解决方案由于某些非数字数据而失败,请使用带有参数errors='coerce'的{​​{3}}将错误数据替换为NaNs,因此输出为浮点数:

df["Stage"]=pd.to_numeric(df["Stage"],errors="coerce")

答案 1 :(得分:1)

您可以使用df.Stage.astype(float)

In [6]: df.Stage.astype(float)
Out[6]: 
0    1.0
1    2.0
2    1.0
3    1.0
4    2.0
Name: Stage, dtype: float64

In [7]: df.Stage.astype(float)

使用pd.to_numeric更好,因为它处理转换为需要较少内存的float类型。

示例

In [23]: df.Stage 
Out[23]: 
0    1
1    2
2    1
3    1
4    2
Name: Stage, dtype: int64

In [24]: import sys 

In [25]: sys.getsizeof(df.Stage)
Out[25]: 272

In [26]: sys.getsizeof(df.Stage.astype(float))
Out[26]: 272

In [27]: sys.getsizeof(pd.to_numeric(df.Stage, downcast='float'))
Out[27]: 252

如果df.Stage中存在错误数据,请将值强制转换为NaN pd.to_numeric(df.Stage, errors='coerce', downcast='float')