Я пытаюсь применить функцию, которая будет возвращать «очищенные» значения электронной почты. Однако у меня возникают трудности с применением моей функции к моей уважаемой колонке.
Пожалуйста, порекомендуйте лучший подход.
Пример данных:
sample_data= {'email': ['Sam@mail.com','Sam@mail.com',
'Doug@mail.com', 'Doug@mail.com',
np.NAN, np.NAN],
'price': [25.95, 31.25, 34.95, 19.95, 59.95, 15.75]}
sample_df = pd.DataFrame(sample_data)
# print(sample_df)
email price
0 Sam@mail.com 25.95
1 Sam@mail.com 31.25
2 Doug@mail.com 34.95
3 Doug@mail.com 19.95
4 NaN 59.95
5 NaN 15.75
Применить функцию:
def clean_emails(s):
emails = {x: str(x).lower() for x in s.unique()}
return s.map(emails)
# Passing the column directly into the function works
sample_df.email = clean_emails(sample_df.email)
# So does passing the entire df into an apply statement
sample_df = sample_df.apply(clean_emails)
print(sample_df)
email price
0 sam@mail.com 25.95
1 sam@mail.com 31.25
2 doug@mail.com 34.95
3 doug@mail.com 19.95
4 nan 59.95
5 nan 15.75
Как показано, передача столбца непосредственно в функцию работает. Так же, применяя весь DF. Меня интересуют большие наборы данных, передающие в функцию один столбец.
Подводя итог, можно сказать, что передает единственный столбец df в функцию, лучший подход для решения этой проблемы? Или можно apply
использовать?