2012-09-25 29 views
10

Tôi muốn đổi lại một TimeSeries trong tần suất hàng ngày (chính xác là 24 giờ) bắt đầu từ một giờ nhất định.Định dạng lại các TimeSeries theo giờ với giờ bắt đầu nhất định

Giống như:

index = date_range(datetime(2012,1,1,17), freq='H', periods=60) 

ts = Series(data=[1]*60, index=index) 

ts.resample(rule='D', how='sum', closed='left', label='left') 

Kết quả tôi nhận được:

2012-01-01 7 
2012-01-02 24 
2012-01-03 24 
2012-01-04 5 
Freq: D 

Kết quả tôi muốn:

2012-01-01 17:00:00 24 
2012-01-02 17:00:00 24 
2012-01-03 17:00:00 12 
Freq: D 

Một vài tuần trước, bạn có thể vượt qua '24H' cho lập luận freq và nó làm việc hoàn toàn khỏe. Nhưng bây giờ nó kết hợp '24H' đến '1D'.

Tôi có đang sử dụng lỗi với '24H' đã được khắc phục ngay bây giờ không? Và làm thế nào tôi có thể có được kết quả mong muốn trong một cách hiệu quả và pythonic (hoặc gấu trúc) trở lại?

phiên bản:

  • python 2.7.3
  • gấu trúc 0.9.0rc1 (nhưng không hoạt động trong 0.8.1, quá)
  • NumPy 1.6.1

Trả lời

16

Resample có một đối số base bao gồm trường hợp này:

ts.resample(rule='24H', closed='left', label='left', base=17).sum() 

Đầu ra:

2012-01-01 17:00:00 24 
2012-01-02 17:00:00 24 
2012-01-03 17:00:00 12 
Freq: 24H 
+1

Cảm ơn rất nhiều! Tôi không hiểu tài liệu tham số đó và nghĩ rằng nó đã được thêm vào cho các trường hợp upsampling. – MaM

+0

@MaM Tôi đồng ý với bạn. Tài liệu trong trường hợp này cần một ví dụ tốt. –

Các vấn đề liên quan