web-dev-qa-db-ja.com

Python pandas複数のインデックス範囲でデータフレームをスライスする

より多くのインデックス範囲でデータフレームをスライスするPythonicの方法は何ですか(例:10:12および25:28)?

私はこれをよりエレガントな方法で望んでいます:

df = pd.DataFrame({'a':range(10,100)})
df.iloc[[i for i in range(10,12)] + [i for i in range(25,28)]]

結果:

     a
10  20
11  21
25  35
26  36
27  37

このようなものはよりエレガントになります:

df.iloc[(10:12, 25:28)]
19
ragesz

Numpyの r_ "スライストリック":

df = pd.DataFrame({'a':range(10,100)})
df.iloc[pd.np.r_[10:12, 25:28]]

与える:

     a
10  20
11  21
25  35
26  36
27  37
44
Jon Clements

pandas isin functionを利用できます。

df = pd.DataFrame({'a':range(10,100)})
ls = [i for i in range(10,12)] + [i for i in range(25,28)]
df[df.index.isin(ls)]


    a
10  20
11  21
25  35
26  36
27  37
2
KevinOelen