如何从熊猫数据框中的列中删除字符串值

Posted

技术标签:

【中文标题】如何从熊猫数据框中的列中删除字符串值【英文标题】:How to remove string value from column in pandas dataframe 【发布时间】:2016-01-29 12:52:58 【问题描述】:

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

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 值,以便我得到:

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 而没有不需要的字符串的函数? 【参考方案1】:

只需应用正则表达式 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

【讨论】:

这怎么能应用到我想知道的任何删除任意字符串或字符

以上是关于如何从熊猫数据框中的列中删除字符串值的主要内容,如果未能解决你的问题,请参考以下文章

如何从包含特定列中特定字符串的熊猫数据框中删除行? [复制]

如何从包含文本的熊猫数据框中的列中提取年份(或日期时间)

如何使用熊猫从另一个数据框 B 的列中删除包含特定数量值的数据框 A 中的行?

确定熊猫数据框中的列值何时更改

如何从熊猫数据框中的时间戳列中删除时区

如果特定列中的值不是熊猫数据框中的整数,则删除行