在for循环中,replace()不使用关键字参数

时间:2019-10-06 13:40:30

标签: python for-loop replace typeerror keyword-argument

我试图将多列美元金额转换为浮点数,并编写了以下代码

    for column in wo.columns[14:21]:
        column = (column.replace( '[\$,)]','', regex=True )
                   .replace( '[(]','-',   regex=True ).replace('#NAME?','NaN', regex=True).astype(float))
    return column


And this is the error i get:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-276-f7c13cb3d0af> in <module>
      1 for column in wo.columns[14:19]:
----> 2     column = (column.replace( '[\$,)]','', regex=True )
      3                .replace( '[(]','-',   regex=True ).replace('#NAME?','NaN', regex=True).astype(float))
      4 return column
      5 

TypeError: replace() takes no keyword arguments

可能是什么问题? wo是数据框的名称,我用来加载数据框的库是Pandas,当我在其他各个列上使用代码时,它工作得很好,就在我使用for循环时,它返回错误。

3 个答案:

答案 0 :(得分:1)

由于不接受关键字参数而发出错误;在这种情况下,regex=True。根据{{​​3}},它不存在。另外,.replace仅适用于字符串,因此此处的数据类型应为str。另一方面,如果要使用正则表达式,建议使用re.sub

答案 1 :(得分:0)

列是什么类型? print(type(column)) 如果它是一个str,它将使用 str.replace,不花太多功夫。尝试删除regex=True

答案 2 :(得分:0)

尝试删除“ regex = True”将对我的情况有所帮助。

# df_num_key_split[name][var].replace(to_replace="[\[|\]|']|\s+|\.|\-", value='', regex=True)

完成此操作后,它就起作用了。

df_num_key_split[name][var].replace("[\[|\]|']|\s+|\.|\-", '')