Dưới đây là một số comparisions
In [100]: df = DataFrame(randn(100000,10))
phương pháp đơn giản (nhưng tôi nghĩ nhiều làm cho điều này chậm), nhưng sẽ làm việc không phụ thuộc vào chỉ số (ví dụ như không phải là một chỉ số bằng số)
In [96]: %timeit df.iloc[range(0,len(df),2)]
10 loops, best of 3: 21.2 ms per loop
Sau đây yêu cầu Int64Index
dựa trên phạm vi (rất dễ nhận, chỉ reset_index()
).
In [107]: %timeit df.iloc[(df.index % 2).astype(bool)]
100 loops, best of 3: 5.67 ms per loop
In [108]: %timeit df.loc[(df.index % 2).astype(bool)]
100 loops, best of 3: 5.48 ms per loop
đảm bảo để cho nó vị trí index
In [98]: %timeit df.take(df.index % 2)
100 loops, best of 3: 3.06 ms per loop
tương tự như trên nhưng không có chuyển đổi trên indicies tiêu cực
In [99]: %timeit df.take(df.index % 2,convert=False)
100 loops, best of 3: 2.44 ms per loop
chiến thắng này được @AndyHayden soln; tính năng này chỉ hoạt động trên một loại dtype đơn lẻ
In [118]: %timeit DataFrame(df.values[::2],index=df.index[::2])
10000 loops, best of 3: 63.5 us per loop