tôi sẽ bắt đầu tắt này bằng cách nói này đang tiếp cận với impl nội bộ. Nhưng nếu bạn thực sự thực sự muốn tính toán những người lập chỉ mục giống như những con gấu trúc.
Bạn sẽ cần v0.19.0rc1 (chỉ là về phát hành), bạn có thể conda install -c pandas pandas=0.19.0rc1
In [41]: rs = pd.Series(range(10))
In [42]: rs
Out[42]:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
# this reaches into an internal implementation
# the first 3 is the window, then second the minimum periods we
# need
In [43]: start, end, _, _, _, _ = pandas._window.get_window_indexer(rs.values,3,3,None,use_mock=False)
# starting index
In [44]: start
Out[44]: array([0, 0, 0, 1, 2, 3, 4, 5, 6, 7])
# ending index
In [45]: end
Out[45]: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# windo size
In [3]: end-start
Out[3]: array([1, 2, 3, 3, 3, 3, 3, 3, 3, 3])
# the indexers
In [47]: [np.arange(s, e) for s, e in zip(start, end)]
Out[47]:
[array([0]),
array([0, 1]),
array([0, 1, 2]),
array([1, 2, 3]),
array([2, 3, 4]),
array([3, 4, 5]),
array([4, 5, 6]),
array([5, 6, 7]),
array([6, 7, 8]),
array([7, 8, 9])]
Vì vậy, đây là loại tầm thường trong trường hợp cửa sổ cố định, điều này trở nên vô cùng hữu ích trong một kịch bản cửa sổ biến, ví dụ trong 0.19.0 bạn có thể chỉ định những thứ như 2S
ví dụ để tổng hợp theo thời gian.
Tất cả điều đó đã nói, việc nhận các chỉ mục này không đặc biệt hữu ích. bạn thường muốn làm điều gì đó có kết quả. Đó là điểm của hàm tổng hợp hoặc .apply
nếu bạn muốn tổng hợp chung.
xem: http://stackoverflow.com/a/38510101/2336654 – piRSquared
Tôi cho rằng những gì bạn muốn là trực quan. Nó vẫn chưa được phát triển. – piRSquared
Mọi cập nhật kể từ năm ngoái? (vẫn chưa phát triển?) – Ziofil