2017-06-05 79 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