我有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
答案 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]