簡體   English   中英

如何將 lambda 函數正確應用於數據框列?

[英]How to apply lambda function to column of dataframe correctly?

我有一個看起來像這樣的數據框:

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

df = pd.DataFrame(data)

我想應用一個函數來擺脫任何 hastag+numbers。 我的代碼如下所示:

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'

我怎樣才能解決這個問題?

您可以使用熊貓字符串方法

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))
df['Name'] = df['Name'].apply(lambda x: re.sub("#[-+]?[0-9]+", " ", x))

1) 注意使用x地方

2)您需要將結果存儲回數據幀

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM