在 Pandas 中删除包含特定字符串列表的行

4

我想要删除包含某些子字符串的列。我想要删除所有包含子字符串'Year'、'Monday'和'/'的值。

我的dataframe如下:

col1
24/05/2020
May Year 2020
Monday
May 2020

The code I tried:

drop_values = ['Monday','Year', '/']
df = df[~df['Col1'].str.contains(drop_values)]

但是我遇到了以下错误:

TypeError: unhashable type: 'list'

2
使用 '|'.join(drop_values) 将列表连接起来,作为参数传递到 str.contains 函数中。 - anky
2
df[~df['Col1'].str.contains('|'.join(drop_values))] - Quang Hoang
1
再解释一下。您正在使用'|'join从列表中创建一个正则表达式,其中'|'是一个或运算符。 - Scott Boston
2个回答

8

Series.str.contains 方法接受一个正则表达式。

>>> df
            col1
0     24/05/2020
1  May Year 2020
2         Monday
3       May 2020
>>> drop_values = ['Monday','Year', '/']
>>> df[~df['col1'].str.contains('|'.join(drop_values))]
       col1
3  May 2020

3

你可以这样做:

df = df[~df['col1'].str.contains('Monday|Year|/')]
print(df)

输出:

       col1
3  May 2020

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