在数据框的整个列中应用正则表达式

hel*_*kee 5 python python-3.x pandas

我有一个包含 3 列的数据框:

id,name,team 
101,kevin, marketing
102,scott,admin\n
103,peter,finance\n
Run Code Online (Sandbox Code Playgroud)

我正在尝试应用正则表达式函数,以便删除不必要的空格。我有删除这些空格的代码,但我无法在整个 Dataframe 中循环它。

这是我迄今为止尝试过的:

df['team'] = re.sub(r'[\n\r]*','',df['team'])
Run Code Online (Sandbox Code Playgroud)

但这会引发错误 AttributeError: 'Series' object has no attribute 're'

谁能建议我如何在整个 Dataframedf['team']列中循环这个正则表达式

YOL*_*OLO 10

你快到了,有两种简单的方法可以做到这一点:

# option 1 - faster way
df['team'] =  [re.sub(r'[\n\r]*','', str(x)) for x in df['team']]

# option 2
df['team'] =  df['team'].apply(lambda x: re.sub(r'[\n\r]*','', str(x)))
Run Code Online (Sandbox Code Playgroud)


小智 7

只要它是一个数据框检查替换https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.replace.html

df['team'].replace( { r"[\n\r]+" : '' }, inplace= True, regex = True)
Run Code Online (Sandbox Code Playgroud)

关于正则表达式,'*' 表示 0 或更多,您应该需要 '+',即 1 或更多