我试图将多列美元金额转换为浮点数,并编写了以下代码
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循环时,它返回错误。
答案 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+|\.|\-", '')