切片pandas DataFrame,其中列的值存在于另一个数组中

时间:2014-03-20 18:43:21

标签: python numpy pandas

我有pandas.DataFrame,其中包含大量数据。在一列中随机重复键。在另一个数组中,我有一个我想要从DataFrame切片的theys键列表以及它们行中其他列的数据。

keys = numpy.array([1,5,7])

数据

 indx   a      b     c   d
    0   5   25.0  42.1  13
    1   2   31.7  13.2   1
    2   9   16.5   0.2   9
    3   7   43.1  11.0  10
    4   1   11.2  31.6  10
    5   5   15.6   2.8  11
    6   7   14.2  19.0   4

如果DataFrame列中的值与a中的值匹配,我想从keys切片所有行。

期望的结果

 indx   a      b     c   d
    0   5   25.0  42.1  13
    3   7   43.1  11.0  10
    4   1   11.2  31.6  10
    5   5   15.6   2.8  11
    6   7   14.2  19.0   4

1 个答案:

答案 0 :(得分:10)

您可以使用isin

>>> df[df.a.isin(keys)]
      a     b     c   d
indx                   
0     5  25.0  42.1  13
3     7  43.1  11.0  10
4     1  11.2  31.6  10
5     5  15.6   2.8  11
6     7  14.2  19.0   4

[5 rows x 4 columns]

query

>>> df.query("a in @keys")
      a     b     c   d
indx                   
0     5  25.0  42.1  13
3     7  43.1  11.0  10
4     1  11.2  31.6  10
5     5  15.6   2.8  11
6     7  14.2  19.0   4

[5 rows x 4 columns]