Код: Выделить всё
df = pd.DataFrame(data={"g0": ["foo", "foo", "bar", "bar"],
"g1": ["baz", "baz", "baz", "qux"],
...,
"gn": [...],
"data": [0.1, 0.3, 0.4, 0.2]},
index=["a", "b", "c", "d"])
groups = df.groupby(by=["g0", "g1", ..., "gn"], sort=False)
Я мог бы напрямую отфильтровать df, чтобы получить df_filtered, и выполнить groups_filtered=df_filtered.groupby(by=["g0", "g1", ..., "gn"], sort=False). Однако в моем процессе мне нужны и groups, и groups_filtered, поэтому моя цель — избежать второго groupby, чтобы сэкономить время. Есть ли элегантный/быстрый способ добиться этого?
Изменить: Я понимаю, что мне следовало предоставить дополнительную информацию, поскольку я получил хорошие ответы, которые не подошли для моего случая. Моя конечная цель — сравнить len(groups) и len(groups_filtered). В этом примере используются g0, g1 и idx_kept = ["a", "b", "d"], len(groups) = 3, но len(groups_filtered) = 2, поскольку "c" был единственным членом своей группы. Однако если idx_kept = ["a", "c", "d"], len(groups_filtered) = 3, потому что "b" был частью группы, содержащей "a" и "b". Так что, возможно, есть другой подход, отличный от того, о котором я думал.
Подробнее здесь: https://stackoverflow.com/questions/797 ... pby-groups
Мобильная версия