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

我有一个数据框,我想在其中删除一些包含一些文本的行。


Date      Campaign

3/24/20   GA Shoes Search Campaign

3/24/20   GA Shoes Display Campaign

3/24/20   GA Bag Search Campaign

3/24/20   GA Bag Display Campaign

3/24/20   IG Shoes Campaign

3/24/20   IG Bag Campaign

3/24/20   FB Shoes Campaign

3/24/20   FB Bag Campaign

3/24/20   Email Campaign

我想删除所有行并保留包含 GA 的行。这是我想要的结果:


Date      Campaign

3/24/20   GA Shoes Search Campaign

3/24/20   GA Shoes Display Campaign

3/24/20   GA Bag Search Campaign

3/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)


莫回无
浏览 171回答 3
3回答

繁星coding

与其删除包含其他字母的行,不如应用一个函数来获取包含' GA' 的行:new = df[df['Campaign'].apply(lambda x: 'GA' in x)]

蝴蝶不菲

这里的假设是对于所有相关行,GA是在句子的开头。Pandas str startswith可以在这里提供帮助:df.loc[df.Campaign.str.startswith("GA")]    Date    Campaign0   3/24/20 GA Shoes Search Campaign1   3/24/20 GA Shoes Display Campaign2   3/24/20 GA Bag Search Campaign3   3/24/20 GA Bag Display Campaign但是,如果GA可能嵌入在句子中而不是在最开头,那么如果您提供与此类似的数据将会很有帮助。这样,就可以确定它GA是在单词中,还是单独存在,或者其他什么,并希望找到适合的解决方案

www说

设置示例数据框如果你有一个数据框: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])看起来像:假设您要创建包含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)]结果所有这些方法都会给你:最后说明 更一般地说:方法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)]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python