如何从pandas数据框的列中删除字符串值?

9
我正在尝试编写一些代码,以在数据框列中将字符串按逗号拆分(使其成为列表),并从该列表中删除某个特定字符串(如果存在)。 删除不需要的字符串后,我希望再次将列表元素连接在逗号处。我的数据框如下所示:
df:

   Column1  Column2
0      a       a,b,c
1      y       b,n,m
2      d       n,n,m
3      d       b,b,x

基本上,我的目标是从第二列中删除所有b值,以便我获得:

df:

   Column1  Column2
0      a       a,c
1      y       n,m
2      d       n,n,m
3      d       x

我所写的代码如下:

以下是我编写的代码:

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

第一行将列中的所有值拆分为逗号分隔的列表。使用该函数,我尝试遍历所有列表并删除其中的 b(如果存在),如果不存在,则返回原样列表。如果最后打印'liste',它只返回 Column2 的第一行,而不是其他行。我做错了什么?是否有一种方法将我的 if 条件实现为 lambda 函数?


如何应用一个函数,返回不带不需要的字符串的Column2? - Dean Fenster
1个回答

20

你可以简单地应用正则表达式b,?,这意味着替换任何在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

我想知道这如何应用于删除任意字符串或字符。 - Monica Heddneck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接