Как выполнить операцию "разворачивания" (explode/unpivot) DataFrame, содержащего данные о количестве, чтобы получить одну строку на каждый элемент?

Тема: Трансформация данных: создание строк из значений total в DataFrame

Привет всем,

Столкнулся с задачей трансформации DataFrame для задачи логистической регрессии. У меня есть следующий DataFrame:

df = pd.DataFrame({"group": ["A", "B"], "total": [3, 5], "occurrence": [2, 1]})

Я хочу трансформировать его таким образом, чтобы получить по одной строке на каждый элемент значения total. Конкретно мне нужно создать 5 + 6 строк, где occurrence строк будет содержать значение 1, а остальные 0. Это может быть либо в существующем столбце occurrence, либо в новом столбце target.

Сейчас я выполняю этот процесс итеративно, но он слишком медленный на больших объемах данных:

expanded = []
for ix, row in df.iterrows():
    for i in range(row["total"]):
        row["y"] = 1 if i < row["occurrence"] else 0
        expanded.append(row.copy())
df_out = pd.DataFrame(expanded).reset_index(drop=True)
df_out.drop(["total", "occurrence"], axis=1, inplace=True)
print(df_out)

Результат должен выглядеть так:

  group  y
0     A  1
1     A  1
2     A  0
3     B  1
4     B  0
5     B  0
6     B  0
7     B  0

Как можно было бы оптимизировать эту трансформацию, чтобы она выполнялась быстрее на больших данных? Возможно, есть методы, удобные для работы с pandas, которые я упустил из виду. Буду признателен за любую помощь!

Заранее спасибо за ваши идеи!