Python pandas按多个索引范围切片数据帧

时间:2016-09-08 14:40:05

标签: python pandas indexing slice

通过更多索引范围(例如10:1225:28)对数据帧进行切片的pythonic方法是什么? 我希望以更优雅的方式:

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

谢谢!

2 个答案:

答案 0 :(得分:35)

您可以使用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

答案 1 :(得分:1)

你可以利用pandas isin功能。

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