2014-10-07 12 views
6

Giả sử tôi có một khung dữ liệu với nhiều dấu thời gian và giá trị. Tôi muốn đo lường Δ values/Δt cứ sau 2.5 giây. Pandas có cung cấp bất kỳ tiện ích nào cho sự khác biệt về thời gian không?Sự khác biệt về thời gian trong Pandas

       time_stamp values 
19492 2014-10-06 17:59:40.016000-04:00 1832128         
167106 2014-10-06 17:59:41.771000-04:00 2671048         
202511 2014-10-06 17:59:43.001000-04:00 2019434         
161457 2014-10-06 17:59:44.792000-04:00 1294051         
203944 2014-10-06 17:59:48.741000-04:00 867856 

Trả lời

6

Chắc chắn là vậy. Trước tiên, bạn cần chuyển đổi các chỉ mục của mình sang định dạng pandas date_range và sau đó sử dụng các hàm bù đắp tùy chỉnh có sẵn cho chuỗi/datafram được lập chỉ mục với lớp đó. Tài liệu hữu ích here. Đọc thêm here về bí danh offset.

Mã này nên Resample dữ liệu của bạn để 2.5s khoảng

#df is your dataframe 
index = pd.date_range(df['time_stamp']) 
values = pd.Series(df.values, index=index) 

#Read above link about the different Offset Aliases, S=Seconds 
resampled_values = values.resample('2.5S') 

resampled_values.diff() #compute the difference between each point! 

Điều đó sẽ làm điều đó.

+0

Cảm ơn @tyleha. Tôi hy vọng sẽ sử dụng giải pháp chính xác này với khung dữ liệu ở trên. Đây là nỗ lực của tôi: http://stackoverflow.com/questions/26247301/pandas-resampling-values-within-time-window-until-now Tôi cần lấy mẫu là nhân quả, nhưng không phải vậy. –

+0

Có phải 'df.diff(). Diff()' tương đương với việc tìm kiếm đạo hàm 2 (xấp xỉ)? – LondonRob

+0

Chắc chắn. Nhưng bạn nên biết yourt của bạn để giữ cho các đơn vị của bạn hữu ích. 2,5^2 s^2 sẽ là whack. – tyleha

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