2013-02-13 44 views
18

Tôi có dữ liệu OHLCV dựa trên phút cho phạm vi mở/giờ đầu tiên (9: 30-10: 30 AM EST). Tôi đang tìm cách định lại dữ liệu này để tôi có thể nhận được một giá trị 60 phút và sau đó tính toán phạm vi.Dữ liệu lấy mẫu phút

Khi tôi gọi hàm dataframe.resample() trên dữ liệu tôi nhận được hai hàng và hàng đầu tiên bắt đầu lúc 9:00 sáng. Tôi đang tìm cách chỉ nhận được một hàng bắt đầu lúc 9:30 sáng.

Lưu ý: dữ liệu ban đầu bắt đầu lúc 9:30.

enter image description here

Chỉnh sửa: Thêm mã:

# Extract data for regular trading hours (rth) from the 24 hour data set 
rth = data.between_time(start_time = '09:30:00', end_time = '16:15:00', include_end = False) 

# Extract data for extended trading hours (eth) from the 24 hour data set 
eth = data.between_time(start_time = '16:30:00', end_time = '09:30:00', include_end = False) 

# Extract data for initial balance (rth) from the 24 hour data set 
initial_balance = data.between_time(start_time = '09:30:00', end_time = '10:30:00', include_end =  False) 

Got mắc kẹt cố gắng để tách các dải mở theo ngày cá nhân và nhận được sự cân bằng ban đầu

conversion = {'Open' : 'first', 'High' : 'max', 'Low' : 'min', 'Close' : 'last', 'Volume' : 'sum'} 
sample = data.between_time(start_time = '09:30:00', end_time = '10:30:00', include_end = False) 
sample = sample.ix['2007-05-07'] 
sample.tail() 

sample.resample('60Min', how = conversion) 

Theo mặc định resample bắt đầu tại beggining của giờ. Tôi muốn nó bắt đầu từ nơi dữ liệu bắt đầu.

+4

Đó là dễ dàng hơn cho chúng tôi nếu bạn sao chép và dán văn bản chứ không phải sử dụng hình ảnh :) –

Trả lời

21

Bạn có thể sử dụng base đối số của resample:

sample.resample('60Min', how=conversion, base=30) 

Từ the above docs-link:

base: int, mặc định 0
      Đối với tần số đó đều chia nhỏ 1 ngày, “ nguồn gốc của các khoảng thời gian tổng hợp.
        Ví dụ, đối với '5min' tần số, cơ sở có thể dao động từ 0 đến 4. Mặc định là 0

+1

Cảm ơn Andy đã làm các trick. Nhiều đánh giá cao. – aozkan

+2

Andy, bạn đá! Tôi lãng phí rất nhiều thời gian cố gắng để có được 'resample ('H', base = 30)' để làm việc, cho đến khi tôi nhìn thấy '' 60Min'' trick của bạn. –

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