所以我有一个像这样的DataFrame:
df = pd.DataFrame(np.random.randn(6, 3), columns=['a', 'b', 'c'])
a b c
0 1.877317 0.109646 1.634978
1 -0.048044 -0.837403 -2.198505
2 -0.708137 2.342530 1.053073
3 -0.547951 -1.790304 -2.159123
4 0.214583 -0.856150 -0.477844
5 0.159601 -1.705155 0.963673
我们可以像这样布尔索引
df[df.a > 0]
a b c
0 1.877317 0.109646 1.634978
4 0.214583 -0.856150 -0.477844
5 0.159601 -1.705155 0.963673
我们也可以通过这样的行标签对其进行切片:
df.ix[[0,2,4]]
a b c
0 1.877317 0.109646 1.634978
2 -0.708137 2.342530 1.053073
4 0.214583 -0.856150 -0.477844
我想同时做这两个操作(所以我避免做一个不必要的复制只是为了做行标签过滤器)。我该怎么做呢?
我正在寻找的伪代码:
df[(df.a > 0) & (df.__index__.isin([0,2,4]))]
答案 0 :(得分:6)
你几乎拥有它:
In [11]: df[(df.a > 0) & (df.index.isin([0, 2, 4]))]
Out[11]:
a b c
0 1.877317 0.109646 1.634978
4 0.214583 -0.856150 -0.477844