在熊猫列上应用条件以创建布尔值索引数组

Let*_*zee 5 python pandas

我想从熊猫数据框中删除特定的行。通常,您可以使用类似的方法

df[df['some_column'] != 1234]
Run Code Online (Sandbox Code Playgroud)

什么df['some_column'] != 1234是创建索引新df的索引数组,因此仅显示具有值的行True

但是在某些情况下(例如我的情况),我看不到如何以这种方式表达条件,并且遍历大熊猫行太慢而不能被认为是可行的选择。

更具体地说,我想删除所有行,其中列的值也是字典中的键,这与上面的示例类似。

在一个完美的世界里,我会考虑类似

df[df['some_column'] not in my_dict.keys()]
Run Code Online (Sandbox Code Playgroud)

这显然是行不通的。有什么建议么?

Sau*_*pta 2

您正在寻找的是isin()

import pandas as pd

df = pd.DataFrame([[1, 2], [1, 3], [4, 6],[5,7],[8,9]], columns=['A', 'B'])
In[9]: df
Out[9]: df
   A  B
0  1  2
1  1  3
2  4  6
3  5  7
4  8  9
mydict = {1:'A',8:'B'}
df[df['A'].isin(mydict.keys())]
Out[11]: 
   A  B
0  1  2
1  1  3
4  8  9
Run Code Online (Sandbox Code Playgroud)

  • `.isin(mydict)` 本身就可以正常工作,您不需要指定键。 (4认同)