seq*_*ard 5 python regex lambda dataframe pandas
我试图编写一些代码,用逗号分隔数据帧列中的字符串(因此它成为一个列表),并从该列表中删除某个字符串(如果存在).删除不需要的字符串后,我想在逗号处再次加入列表元素.我的数据框看起来像这样:
df:
Column1 Column2
0 a a,b,c
1 y b,n,m
2 d n,n,m
3 d b,b,x
Run Code Online (Sandbox Code Playgroud)
所以基本上我的目标是从column2中删除所有b值,以便我得到:
DF:
Column1 Column2
0 a a,c
1 y n,m
2 d n,n,m
3 d x
Run Code Online (Sandbox Code Playgroud)
我写的代码如下:
df=df['Column2'].apply(lambda x: x.split(','))
def exclude_b(df):
for index, liste in df['column2].iteritems():
if 'b' in liste:
liste.remove('b')
return liste
else:
return liste
Run Code Online (Sandbox Code Playgroud)
第一行将列中的所有值拆分为逗号分隔列表.现在,我尝试迭代所有列表并删除b(如果存在),如果不存在则返回列表.如果我在末尾打印'liste',它只返回Column2的第一行,而不返回其他行.我究竟做错了什么?是否有办法将我的if条件实现为lambda函数?
Nad*_*ham 11
只需你可以应用正则表达式b,?,这意味着替换if存在 后的任何值b和,b
df['Column2'] = df.Column2.str.replace('b,?' , '')
Out[238]:
Column1 Column2
0 a a,c
1 y n,m
2 d n,n,m
3 d x
Run Code Online (Sandbox Code Playgroud)