2017-10-12 137 views
2

我有一個數據幀,數據列的值不會改變浮動

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") 

但仍值是相同

+0

我想你需要'DF [ 「舞臺」] = pd.to_numeric(DF [ 「舞臺」],錯誤= 「要挾」) ' – jezrael

+0

我想要浮點數 – pyd

+0

嘗試過df [「Stage」] = pd.to_numeric(df [「Stage」],errors =「coerce」)但仍然一樣 – pyd

回答

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更好,因爲它處理轉換爲佔用較少內存的浮點類型。

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壞數據,脅迫價值NaNpd.to_numeric(df.Stage, errors='coerce', downcast='float')

+0

其工作,謝謝 – pyd

+0

@pyd歡迎您:) – MedAli

3

我想你需要astype

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

如果第一解決方案失敗,因爲一些非數字數據,使用to_numeric wi用於更換損壞的數據NaNs個參數errors='coerce',所以輸出是浮動:

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

感謝Jezrael,它工作正常 – pyd

+0

在這個http://pandas.pydata.org/pandas-docs/version/0.20/generated/pandas.to_numeric.html的例子,它正在工作,但是當我嘗試它不改變浮動' – pyd

+1

是,然後'df [「Stage」] = pd.to_numeric(df [「Stage」],downcast =「float」)'也應該起作用,但如果所有數據都是數字,則astype是最好的。 – jezrael