根据数组筛选Pandas DataFrame的行
我有一个叫做 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]