replace () не принимает аргументов с ключевыми словами, в цикле for - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь преобразовать несколько столбцов суммы в долларах в число с плавающей точкой, и написал следующий код

    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 - это имя dataframe, библиотека, которую я использовал для загрузки dataframe, была Pandas, и когда я использовал код для других отдельных столбцов, он работал нормально, просто когда я использовал цикл for, он возвращал ошибку.

Ответы [ 2 ]

0 голосов
/ 06 октября 2019

Выдает ошибку, потому что не принимает аргументы ключевого слова;в этом случае regex=True. Согласно документации , она не существует. Кроме того, .replace только для строк, поэтому тип данных здесь должен быть str. С другой стороны, если вы хотите использовать регулярные выражения, я бы порекомендовал re.sub

0 голосов
/ 06 октября 2019

Какой тип столбца? print(type(column)) Если это str, он будет использовать str.replace, который не требует kwargs. Попробуйте удалить regex=True.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...