如何使用多个备选值创建掩码(Pandas DataFrame)

7
假设我们有一个名为 f 的 Pandas 数据框,如下所示。我试图创建一个掩码来选择所有在列 'xx' 中具有值'a'或'b'的行(我想选择出第0、1、3、4行)。
f = pd.DataFrame([['a', 'b','c','a', 'b','c'],['1', '2','3', '4', '5','6', ]])
f = f.transpose()
f.columns = ['xx', 'yy']
f

   xx   yy
0   a   1
1   b   2
2   c   3
3   a   4
4   b   5
5   c   6

在pandas中有没有一种优雅的方法来实现这个?我知道如果要选择所有f.xx =='a'的行,我们可以使用f[f.xx == 'a']。但我还没有找到如何选择f.xx为'a'或'b'的行。谢谢。

1个回答

7

您可以使用isin

 print(f[(f["xx"].isin(("a","b")))])

这将给你:

  xx yy
0  a  1
1  b  2
3  a  4
4  b  5

如果你真的想要一个口罩,你可以使用或|:
mask = (f["xx"] == "a") | (f["xx"] == "b")

print(f[mask])

这将给您相同的输出:

 xx yy
0  a  1
1  b  2
3  a  4
4  b  5

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