Создание функции, которая управляет различными операциями очистки строк - PullRequest
0 голосов
/ 31 марта 2020

Я построил функцию, которая выполняет несколько операций очистки, но когда я запускаю ее для столбца объекта, я получаю AttributeError: у объекта 'str' нет ошибки атрибута 'str'. Почему это так?

news = {'Text':['bNikeb invests in shoes', 'bAdidasb invests in t-shirts', 'dog drank water'], 'Source':['NYT', 'WP', 'Guardian']}
news_df = pd.DataFrame(news)

def string_cleaner(x):
    x = x.str.strip()
    x = x.str.replace('.', '')
    x = x.str.replace(' ', '')

news_df['clean'] = news_df['Text'].apply(string_cleaner)

1 Ответ

1 голос
/ 31 марта 2020
news = {'Text':['bNikeb invests in shoes', 'bAdidasb invests in t-shirts', 'dog drank water'], 'Source':['NYT', 'WP', 'Guardian']}
news_df = pd.DataFrame(news)

def string_cleaner(x):
    x = x.strip()
    x = x.replace('.', '')
    x = x.replace(' ', '')
    return x

news_df['clean'] = news_df['Text'].apply(string_cleaner)

apply используется для применения функции к объектам серии pandas, окончательный тип возврата определяется по типу возврата примененной функции. Итак, вы можете подумать о передаче списка значений в функцию по одному для преобразования этих значений, в вашем случае вы отправляете список строк для очистки каждой строки.

Так как x - строка , операции, которые вы применяете (вырезать, заменить), работают напрямую, нет операции .str для строк python. Итак, это дает ошибку. Существует функция str, которая используется таким образом str (x) для приведения другого типа python к строке.

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