Как правильно применить лямбда-функцию к столбцу данных? - PullRequest
1 голос
/ 25 марта 2020

У меня есть фрейм данных, который выглядит следующим образом:

data = {'Name':['Tom #111', 'nick #1313', 'krish', 'jack #2 lol'],
        'Age':[20, 21, 19, 18]}

df = pd.DataFrame(data)

И я хочу применить функцию, чтобы избавиться от любых чисел hastag +. Мой код выглядит так:

df['Name'].apply(lambda x: re.sub("#[-+]?[0-9]+", " ", str(df['Name'])))

Однако это выглядит так:

0 0 Tom
1 0 Tom
2 0 Tom
3 0 Tom

Мой ожидаемый результат:

0 0 Tom
1 0 nick 
2 0 krish
3 0 jack lol

Я пытался использовать ось = 1 в лямбда-функции, но выдает ошибку:

TypeError: <lambda>() got an unexpected keyword argument 'axis'

Как я могу это исправить?

Ответы [ 2 ]

3 голосов
/ 25 марта 2020

Вы можете использовать pandas строковые методы ,

df['Name'] = df['Name'].str.replace('#\d+', '')

    Name        Age
0   Tom         20
1   nick        21
2   krish       19
3   jack lol    18

Если вы хотите знать, как использовать apply (определенно не предпочтительнее, чем методы str),

df['Name'] = df['Name'].apply(lambda x: re.sub('#\d+', '', x))
2 голосов
/ 25 марта 2020
df['Name'] = df['Name'].apply(lambda x: re.sub("#[-+]?[0-9]+", " ", x))

1) примечание, где используется x

2) вам нужно сохранить результат обратно в фрейм данных

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