Этого можно достичь от Pandas до groupby
в pandas
.
import pandas as pd
test_a = pd.DataFrame(dict(
date=(2021, 2022, 2023),
c1=(1,1,3),
c2=(1,1,1),
c3=("a", "b", "b"),
c4 =("ss", "sa", "sd")
))
split_a = test_a.groupby(["c1", "c2"])
Теперь split_a
будет итератором, который содержит кадры данных выше. Вы можете восстановить их, перебирая их, чтобы создать список фреймов данных:
for indx, split_data in split_a:
print("Index:", indx)
print(split_data)
# if you need the values, just use split_data.values
Поскольку вы применяете прогноз для каждой группы; это может быть сделано через заявку по группе. В качестве простого примера, давайте создадим функцию, которая возвращает количество строк в кадре данных:
def nrows(df):
return df.shape[0]
Затем, запустив это с apply, запустит «функцию прогнозирования» для каждой группы:
def nrows(df):
return df.shape[0]
nrows_by_group = test_a.groupby(["c1", "c2"]).apply(nrows)