Вот рекомендуемый способ сделать это в Featuretools.Вам нужно создать еще одну таблицу, чтобы она работала именно так, как вы хотите.
import featuretools as ft
import pandas as pd
df = pd.DataFrame({'A': [1, 1, 2, 2],
'B': [1, 2, 3, 4],
'C': [0.3, 0.2, 1.2, -0.5]})
es = ft.EntitySet()
es.entity_from_dataframe(entity_id="example",
index="id",
make_index=True,
dataframe=df)
es.normalize_entity(new_entity_id="a_entity",
base_entity_id="example",
index="A")
fm, fl = ft.dfs(target_entity="example",
entityset=es,
agg_primitives=["min"])
fm
это возвращает
A B C a_entity.MIN(example.B) a_entity.MIN(example.C)
id
0 1 1 0.3 1 0.2
1 1 2 0.2 1 0.2
2 2 3 1.2 3 -0.5
3 2 4 -0.5 3 -0.5
Если вы не хотите создавать дополнительную таблицу, вы можете попробовать использовать примитив cum_min
, который вычисляет совокупное значение после группировки по A
df = pd.DataFrame({'A': [1, 1, 2, 2],
'B': [1, 2, 3, 4],
'C': [0.3, 0.2, 1.2, -0.5]})
es = ft.EntitySet()
es.entity_from_dataframe(entity_id="example",
index="id",
make_index=True,
variable_types={
"A": ft.variable_types.Id
},
dataframe=df,)
fm, fl = ft.dfs(target_entity="example",
entityset=es,
groupby_trans_primitives=["cum_min"])
fm
это возвращает
B C A CUM_MIN(C) by A CUM_MIN(B) by A
id
0 1 0.3 1 0.3 1.0
1 2 0.2 1 0.2 1.0
2 3 1.2 2 1.2 3.0
3 4 -0.5 2 -0.5 3.0