Tôi vừa phát hiện ra sức mạnh của gấu trúc và tôi yêu nó, nhưng tôi không thể tìm ra vấn đề này:Nhóm Pandas DataFrame bởi n ngày bắt đầu từ sự khởi đầu của ngày
Tôi có một DataFrame df.head()
:
lon lat h filename time
0 19.961216 80.617627 -0.077165 60048 2002-05-15 12:59:31.717467
1 19.923916 80.614847 -0.018689 60048 2002-05-15 12:59:31.831467
2 19.849396 80.609257 -0.089205 60048 2002-05-15 12:59:32.059467
3 19.830776 80.607857 0.076485 60048 2002-05-15 12:59:32.116467
4 19.570708 80.588183 0.162943 60048 2002-05-15 12:59:32.888467
tôi muốn nhóm dữ liệu của tôi thành chín khoảng ngày
gb = df.groupby(pd.TimeGrouper(key='time', freq='9D'))
nhóm thứ nhất:
2002-05-15 12:59:31.717467 lon lat h filename time
0 19.961216 80.617627 -0.077165 60048 2002-05-15 12:59:31.717467
1 19.923916 80.614847 -0.018689 60048 2002-05-15 12:59:31.831467
2 19.849396 80.609257 -0.089205 60048 2002-05-15 12:59:32.059467
3 19.830776 80.607857 0.076485 60048 2002-05-15 12:59:32.116467
...
nhóm Next:
2002-05-24 12:59:31.717467 lon lat height filename time
815 18.309498 80.457024 0.187387 60309 2002-05-24 16:35:39.553563
816 18.291458 80.458514 0.061446 60309 2002-05-24 16:35:39.610563
817 18.273408 80.460014 0.129255 60309 2002-05-24 16:35:39.667563
818 18.255358 80.461504 0.046761 60309 2002-05-24 16:35:39.724563
...
Vì vậy, các dữ liệu được nhóm lại trong chín ngày, kể từ lần đầu tiên (12: 59: 31,717467), chứ không phải từ đầu những ngày như tôi muốn.
Khi nhóm của một ngày:
gb = df.groupby(pd.TimeGrouper(key='time', freq='D'))
mang lại cho tôi:
2002-05-15 00:00:00 lon lat h filename time
0 19.961216 80.617627 -0.077165 60048 2002-05-15 12:59:31.717467
1 19.923916 80.614847 -0.018689 60048 2002-05-15 12:59:31.831467
2 19.849396 80.609257 -0.089205 60048 2002-05-15 12:59:32.059467
3 19.830776 80.607857 0.076485 60048 2002-05-15 12:59:32.116467
...
tôi có thể chỉ vòng qua ngày cho đến khi tôi nhận được một khoảng thời gian chín ngày, nhưng tôi nghĩ rằng nó có thể được thực hiện thông minh hơn , Tôi đang tìm kiếm một lựa chọn cá mú freq
tương đương với YS (đầu năm) chỉ trong vài ngày, một cách để thiết lập thời gian bắt đầu (có thể bởi tùy chọn Cá mú convention : {‘start’, ‘end’, ‘e’, ‘s’}
), hoặc ???
Tôi đang chạy Python 3.5.2 và Pandas là trong phiên bản: 0.19.0
[Câu trả lời] (http://stackoverflow.com/a/22528074/754456) đề xuất thêm tham số 'closed = 'left'' có thể làm điều đó? – mfitzp
Tôi đã thử nó, nhưng không thay đổi một điều – user1643523
Liệu 'convention = 's'' làm bất cứ điều gì? Tài liệu này thiếu nghiêm trọng về những tham số của 'TimeGrouper'. – mfitzp