为了账号安全,请及时绑定邮箱和手机立即绑定

如何删除 Pandas 中包含某些文本的行

如何删除 Pandas 中包含某些文本的行

莫回无 2023-06-13 15:04:41
我有一个数据框,我想在其中删除一些包含一些文本的行。Date      Campaign3/24/20   GA Shoes Search Campaign3/24/20   GA Shoes Display Campaign3/24/20   GA Bag Search Campaign3/24/20   GA Bag Display Campaign3/24/20   IG Shoes Campaign3/24/20   IG Bag Campaign3/24/20   FB Shoes Campaign3/24/20   FB Bag Campaign3/24/20   Email Campaign我想删除所有行并保留包含 GA 的行。这是我想要的结果:Date      Campaign3/24/20   GA Shoes Search Campaign3/24/20   GA Shoes Display Campaign3/24/20   GA Bag Search Campaign3/24/20   GA Bag Display Campaign我试着这样做:mask = df['Campaign'].str.contains('FB')idx = df.index[mask]new = df.drop(idx,axis=0)但是,它只有在我一次做一个字符串时才有效。我试图这样做以节省时间,但没有成功:mask = df['Campaign'].str.contains('FB', 'Email', 'IG')idx = df.index[mask]new = df.drop(idx,axis=0)
查看完整描述

3 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

与其删除包含其他字母的行,不如应用一个函数来获取包含' GA' 的行:

new = df[df['Campaign'].apply(lambda x: 'GA' in x)]


查看完整回答
反对 回复 2023-06-13
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

这里的假设是对于所有相关行,GA是在句子的开头。Pandas str startswith可以在这里提供帮助:

df.loc[df.Campaign.str.startswith("GA")]


    Date    Campaign

0   3/24/20 GA Shoes Search Campaign

1   3/24/20 GA Shoes Display Campaign

2   3/24/20 GA Bag Search Campaign

3   3/24/20 GA Bag Display Campaign

但是,如果GA可能嵌入在句子中而不是在最开头,那么如果您提供与此类似的数据将会很有帮助。这样,就可以确定它GA是在单词中,还是单独存在,或者其他什么,并希望找到适合的解决方案


查看完整回答
反对 回复 2023-06-13
?
www说

TA贡献1775条经验 获得超8个赞

设置示例数据框

如果你有一个数据框:


df = pd.DataFrame({'x': ['A0', 'A1', 'B2', 'A3'],

                   'y': ['B0', 'B1', 'B2', 'B3'],

                   'z': ['A0', 'C1', 'C2', 'C3'],

                   'w': ['D0', 'D1', 'D2', 'D3']},

                    index=[0, 1, 2, 3])

看起来像:

//img1.sycdn.imooc.com/648815f70001f05f01360130.jpg

假设您要创建包含A在 column 中的那些行x


方法

str.contains:

你可以做:

df[df['x'].str.contains('A')]

列表理解

df[['A' in each for each in df['x']]]就足够了。


apply():

如果你喜欢apply(),可以这样做:

df[df['x'].apply(lambda x: 'A' in x)]

结果

所有这些方法都会给你:

//img4.sycdn.imooc.com/648816030001783e01450109.jpg

最后说明 更一般地说:

  • 方法str.contains

df[df[name_of_column_which_should_contain_something].str.contains(what_should_it_contain)]

  • 列表理解方法:

    df[[what_to_search_for in each for each in df[whichcolumn]]]

  • 方法apply()

    df[df[which_column_to_search_in].apply(lambda x: what_to_search_for in x)]


查看完整回答
反对 回复 2023-06-13
  • 3 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信