2017-06-05 11 views
-1

下面的代碼在Pandas版本爲0.16.2的服務器上拋出AttributeError,而它在版本爲0.20的機器上運行正常。AttributeError:'module'對象在Pandas中沒有屬性'to_numeric'

df = pandas.read_csv('filename', header = None, error_bad_lines = False, warn_bad_lines =True,quoting=csv.QUOTE_NONE) 

df = df.drop(df[pandas.to_numeric(df[599], errors='coerce').isnull()].index) 

的錯誤消息如下:

Traceback (most recent call last): 
    File "train_model.py", line 11, in <module> 
    df = df.drop(df[pandas.to_numeric(df[599], errors='coerce').isnull()].index) 
AttributeError: 'module' object has no attribute 'to_numeric' 

有沒有一種方法,以避免在0.16.2版本的錯誤?對服務器的更新是不可能的。

回答

1

如果你的什麼在0.17版本中, 新熊貓文檔中注意到你應當注意到

pd.to_numeric is a new function to coerce strings to numbers (possibly with coercion) (GH11133)

因此,熊貓0.16不具備的功能pd.to_numeric。但是,您可以使用此功能來實現相同的目的。

df = df.drop(df[df[599].astype(float).isnull()].index) 
2

Pandas.to_numeric僅適用於版本0.17及更高版本。您可以使用DataFrame.convert_objects而不是convert_numeric=True參數,而是自動強制錯誤。

df = df.drop(df[df[599].convert_objects(convert_numeric=True).isnull()].index) 
+0

這裏有一個語法問題。你能交叉檢查嗎? – user3667569

+0

@ user3667569哎呀對不起,我沒有正確地複製並將'df.convert_objects(convert_numeric = True)'拷貝到你的代碼中。沒有意識到你正在丟棄空字段。爲此你可以使用'.dropna()',如果我正確理解你的邏輯,它應該做同樣的事情。 – umutto

+0

我不會丟失空字段。我的代碼的意圖是刪除數據幀中列599中具有非浮點值的任何行。 – user3667569