Контекст: я разрешаю пользователю добавлять определенные методы для конвейера процесса очистки (добавляется к основному списку со всеми выбранными методами). Каждый элемент из этого списка является именем функции.
Мой вопрос:
Почему это работает:
dataframe[cleanedCol] =dataframe[colToClean].apply(replace_contractions).apply(remove_links).apply(remove_emails)
А что-то вроде этого нет?
pipeline = ['replace_contractions','remove_links','remove_emails']
for method in pipeline:
dataframe[cleanedColumn] = dataframe[columnToClean].apply(method)
Как я могу итеративно применить каждый из методов из списка (по порядку их расположения в списке) к столбцу фрейма данных?
Заранее спасибо!
Во втором примере у вас есть список строк, а не список переменных. Вот почему он возвращает ошибку, когда вы передаете его в метод применения.






Вам нужно либо преобразовать эти строки в фактические функциональные объекты, либо, что еще лучше, просто хранить объекты функций вместо имен в виде строк.
pipeline = [replace_contractions, remove_links, remove_emails]
for method in pipeline:
dataframe[cleanedColumn] = dataframe[columnToClean].apply(method)
Это был мой плохой, совсем забыл об этом! Я использовал словарь как способ сопоставления ключей как «имени функции» и значений как «выбранных параметров» {function: 1}, etc и забыл, что я должен использовать объекты функции вместо строк! Спасибо!
Можете ли вы сказать нам, в чем разница между
replace_contractionsи'replace_contractions'? Каковы типы обоих этих выражений? Если вы просто делаете один.apply(), будет лиdataframe[colToClean].apply('replace_contractions')работать? Почему нет?