无法使用波浪号 (~) 过滤 DataFrame
给定这个数据表 df
,我想把包含单词 Zmiana
的行删除。
Event Q
0 Zmiana - I. Zigeranovic ZEJSCIE D. Kulig 1
1 Zmiana - T. Taylor ZEJSCIE M. Taylor 1
2 NaN 1
3 L. Jeter - niecelny rzut wolny 1
df = df[~df.Event.str.contains('Zmiana').fillna(False)] # tilde takes the opposite
这让我遇到了一个错误 KeyError: '[-2 -2 -1 -1] not in index'
,都是因为有一行是 NaN
(表示缺失值)。
不管这是不是个bug,你知道有什么解决办法吗?
1 个回答
1
我把你的例子简化了一下。基本上你有的是
df = pd.DataFrame(['aa', 'ab', 'c'], columns={'val'})
>>> df[df.val.str.contains('a').fillna(False)]
Out[737]:
val
0 aa
1 ab
>>> df[df.val.str.contains('a').fillna(False) == False]
Out[738]:
val
2 c
这个 contains()
方法返回的只是一个包含布尔值的数组——你可以用标准的方法来处理这个数组。