如何从pandas datafram的列中删除字符串值

2024-04-16 04:15:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

df:

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

所以基本上我的目标是从column2中删除所有的b值,这样我就可以得到:

数据框:

   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函数?


Tags: 数据lambda函数字符串代码indf列表
1条回答
网友
1楼 · 发布于 2024-04-16 04:15:56

简单地说,您可以应用regexb,?,这意味着替换在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

相关问题 更多 >