根据数组筛选Pandas DataFrame的行

6 投票
1 回答
4551 浏览
提问于 2025-04-17 23:11

我有一个叫做 pandas.DataFrame 的数据表,里面有很多数据。在其中一列里,有一些随机重复的键。在另一个数组里,我有一份这些键的列表,我想从这个 DataFrame 中提取出这些键对应的行,以及它们所在行的其他列的数据。

:

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 个回答

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]

撰写回答