с учетом приведенного ниже фрейма данных:
import pandas as pd
import numpy as np
np.random.seed(seed=1)
size=20
df = pd.DataFrame({"group":np.random.choice(["A","B","C"], size),
"exclude":np.random.choice(["Yes","No"], size),
"value":np.random.randint(0,5,size=20)}).sort_values(["group","value","exclude"])
Для каждой группы мне нужен столбец с промежуточным итогом группы, исключая указанные c строки. Я делаю это с помощью следующей команды:
df["group_sum"] = df[(df.exclude=="No")].groupby("group")["value"].transform("sum")
К сожалению, столбец пуст для исключенных записей. Чтобы заполнить его, я выполняю следующее:
df["group_sum"] = df.groupby("group")["group_sum"].transform("max")
Есть ли способ объединить два утверждения в одно?