выбрать все элементы в группе, которые соответствуют определенному условию, используя панд

У меня есть df, сгруппированный по id. Для каждой группы id я хотел бы вернуть все строки, в которых находится столбец a больше, чем среднее значение a для этой группы. Я попробовал следующее:

df = pd.DataFrame(data = {"a": np.arange(10), "b": np.arange(10)[::-1], "c": np.random.choice(a = np.arange(10), size = 10)}, index = pd.Index(data = np.random.choice(a = [1,2,3], size = 10), name = "id"))
df.groupby("id").apply(lambda x: x[x.a > x.a.mean()])

При этом возникает ошибка ValueError: Duplicated level: «id», присвоенный уровню 1, уже используется для уровня 0.

Что я делаю не так?

4 голоса | спросил Alex 28 Mayam18 2018, 07:54:06

1 ответ


0
Используйте ---- +: = 0 =: + ---- для того же ---- +: = 1 =: + ---- как размер оригинала ---- +: = 2 =: + -- для лучшей производительности как ---- +: = 3 =: + ---- решение:Деталь :В вашем решении нужен параметр ---- +: = 6 =: + ---- для избежания ---- +: = 7 =: + ---- с одинаковыми именами уровней, потому что ---- +: =8 =: + ---- в названии индекса:Если сначала ---- +: = 10 =: + ---- получить имя столбца ---- +: = 11 =: + ---- и имя индекса ---- +: = 12 =: + ---- , но есть такие же значения:Еще один тест - удаление ---- +: = 14 =: + ---- - ---- +: = 15 =: + ---- :
ответил jezrael 28 Mayam18 2018, 07:55:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132