6

だから私はこのようなデータフレームを持っています:

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]))] 
4

1 に答える 1

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
于 2013-02-06T09:15:13.027 に答える