У меня есть df, в котором есть группы.Для каждой группы я хотел бы сформировать новый столбец, который содержит целые числа от 1 до количества строк в этой группе.Следующая попытка не работает, так как создает одну строку с несколькими столбцами вместо одного столбца с несколькими строками.Почему это происходит?
df = pd.DataFrame(data = {"a": np.arange(5), "b": np.arange(5)[::-1], "id": [1,1,1,2,2]}).set_index("id")
df["c"] = df.groupby("id").apply(lambda x: np.arange(1, len(x)+1))
В качестве альтернативы, если я пытаюсь вернуть объект Series
как в:
df["c"] = df.groupby("id").apply(lambda x: pd.Series(data = np.arange(1, len(x)+1)))
Это вызывает исключение, говоря, что индексы несовместимы (что имеет смыслпоскольку у возвращенного Series
теперь есть MultiIndex
)
Обновление : позвольте мне сделать этот вопрос немного более общим: как можно сделать groupby
на кадре данных, возвращающем Series
с тем же индексом, что и в кадре данных, чтобы результирующий ряд можно было объединить в исходный кадр данных?