Разделить список по времени
Есть список:
data=[1591815169.0, 0.0, 9925.58, 0.00274742],
[1591814923.0, 0.0, 9925.95, 0.00035453],
[1591814522.0, 1.0, 9928.38, 0.00020842],
[1591814433.0, 0.0, 9932.9, 0.00035439],
[1591813763.0, 0.0, 9940.14, 0.06225033],
[1591813465.0, 0.0, 9940.21, 0.0709],
[1591813260.0, 1.0, 9940.34, 0.00017688],
[1591813169.0, 1.0, 9940.43, 0.00431554],
[1591813055.0, 1.0, 9940.42, 0.00066515],
[1591812918.0, 1.0, 9940.14, 0.05],
[1591812509.0, 0.0, 9940.17, 0.00100351],
[1591812478.0, 1.0, 9952.59, 0.0722],
[1591812472.0, 0.0, 9944.41, 0.00787718],
[1591812259.0, 0.0, 9943.66, 0.00932257],
...]
Надо сделать вложенный список со сгруппированными данными по 90 минут начиная с 00:00(т.е 00:00-01:30,01:30-03:00,03:00-04:30,...). Как это можно реализовать? Заранее спасибо.
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
я бы посоветовал использовать pandas.
Как-нибудь так:
import pandas as pd
data=[[1591815169.0, 0.0, 9925.58, 0.00274742],
[1591814923.0, 0.0, 9925.95, 0.00035453],
[1591814522.0, 1.0, 9928.38, 0.00020842],
[1591814433.0, 0.0, 9932.9, 0.00035439],
[1591813763.0, 0.0, 9940.14, 0.06225033],
[1591813465.0, 0.0, 9940.21, 0.0709],
[1591813260.0, 1.0, 9940.34, 0.00017688],
[1591813169.0, 1.0, 9940.43, 0.00431554],
[1591813055.0, 1.0, 9940.42, 0.00066515],
[1591812918.0, 1.0, 9940.14, 0.05],
[1591812509.0, 0.0, 9940.17, 0.00100351],
[1591812478.0, 1.0, 9952.59, 0.0722],
[1591812472.0, 0.0, 9944.41, 0.00787718],
[1591812259.0, 0.0, 9943.66, 0.00932257]]
df = pd.DataFrame(data, columns=["date", "a", "b", "c"])
df["date"] = pd.to_datetime(df["date"], unit="s")
df.set_index("date", drop = True, inplace = True)
df.sort_index(ascending = True, inplace = True) # необязательно при resample
res = df.resample("90T").sum().values.tolist()
Соответственно, res будет:
[[6.0, 139135.31999999998, 0.28237592]]
UPDATE
Если нужно аггрегировать не в сумму, а в список, то можно сделать так:
res = df.resample("90T").apply(list).values.tolist()
res, в таком случае, будет:
[[[0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0], [9943.66, 9944.41, 9952.59, 9940.17, 9940.14, 9940.42, 9940.43, 9940.34, 9940.21, 9940.14, 9932.9, 9928.38, 9925.95, 9925.58], [0.00932257, 0.00787718, 0.0722, 0.00100351, 0.05, 0.00066515, 0.00431554, 0.00017688, 0.0709, 0.06225033, 0.00035439, 0.00020842, 0.00035453, 0.00274742]]]