2017-07-03 34 views
5

Tôi có một DataFrame như thế này:tập hợp Dataframe trong nhóm 3

  date  open  high   low  close  vwap 
0 1498907700 0.00010020 0.00010020 0.00009974 0.00010019 0.00009992 
1 1498908000 0.00010010 0.00010010 0.00010010 0.00010010 0.00010010 
2 1498908300 0.00010010 0.00010010 0.00009957 0.00009957 0.00009992 
3 1498908600 0.00009957 0.00009957 0.00009957 0.00009957 0.00000000 
4 1498908900 0.00010009 0.00010009 0.00009949 0.00009959 0.00009952 
5 1498909200 0.00009987 0.00009991 0.00009956 0.00009956 0.00009974 
6 1498909500 0.00009948 0.00009948 0.00009915 0.00009915 0.00009919 
... 
789 

Và muốn làm một trung bình của mỗi 3 hàng và có một DataFrame mới mà sau đó ngắn hơn 3 lần với giá trị trung bình của tất cả các bộ 3 hàng bên trong DataFrame nguồn.

Trả lời

7

Sử dụng groupbymean với một mảng thiết kế để tạo ra các nhóm bạn cần

df.groupby(np.arange(len(df)) // 3).mean() 
+0

Vậy điều gì nếu không có đủ hàng để phù hợp với các nhóm 3? Là người đầu tiên là 4/5 hoặc người cuối cùng? Làm thế nào tôi có thể làm điều đó để trở thành nhóm đầu tiên có được 'trẻ mồ côi'? –

+1

@MaximeB đảo ngược mảng np.arange (len (df)) [:: - 1] // 3 – piRSquared

+0

Cảm ơn bạn rất nhiều! Tôi cần nhiều hơn những gì tôi hỏi ở đây mặc dù ... Có lẽ bạn có thể giúp tôi ra khỏi đó: https://stackoverflow.com/questions/44895459/yield-and-do-operations-on-each-3-rows-of- khung dữ liệu –

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