无法使用波浪号 (~) 过滤 DataFrame

0 投票
1 回答
900 浏览
提问于 2025-04-18 05:25

给定这个数据表 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() 方法返回的只是一个包含布尔值的数组——你可以用标准的方法来处理这个数组。

撰写回答