在Pandas中,基于列表选择数据框的子集行

6

我有一个数据框 df1 和列表 x

In [22] : import pandas as pd
In [23]: df1 = pd.DataFrame({'C': range(5), "B":range(10,20,2), "A":list('abcde')})
In [24]: df1
Out[24]:
   A   B  C
0  a  10  0
1  b  12  1
2  c  14  2
3  d  16  3
4  e  18  4

In [25]: x = ["b","c","g","h","j"]

我想做的是基于列表在数据框中选择行。
   A   B  C
1  b  12  1
2  c  14  2

有什么方法可以做到这一点吗?我尝试了这个但失败了。

df1.join(pd.DataFrame(x),how="inner")
2个回答

11

使用 isin 函数返回一个布尔索引,用于对数据框进行索引:

In [152]:

df1[df1['A'].isin(x)]
Out[152]:
   A   B  C
1  b  12  1
2  c  14  2

这就是 isin 返回的内容:

In [153]:

df1['A'].isin(x)
Out[153]:
0    False
1     True
2     True
3    False
4    False
Name: A, dtype: bool

0
使用 df[df["column"].isin(values)]。

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