首页 > 解决方案 > 如何正确地将 lambda 函数应用于数据框列?

问题描述

我有一个看起来像这样的数据框:

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

我试图在 lambda 函数中使用axis = 1,但它给了我一个错误:

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

我怎样才能解决这个问题?

标签: pythonpandasdataframelambda

解决方案


您可以使用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))

推荐阅读