Выбор нескольких столбцов (на основе MultiIndex) внутри DataFrameGroupBy в PythonPython

Программы на Python
Anonymous
Выбор нескольких столбцов (на основе MultiIndex) внутри DataFrameGroupBy в Python

Сообщение Anonymous »

У меня сложный фрейм данных с несколькими столбцами. Все они основаны на MultiIndex. В какой-то момент мне захотелось уточнить некоторые показатели, поэтому я начал экспериментировать с методом .groupby. Я могу выполнить основы: 1) вычислить метод агрегирования для всего кадра данных или 2) вычислить его для одного конкретного столбца. Однако меня интересует вычисление метода агрегирования путем указания некоторых имен на первых уровнях столбцов. Это довольно легко сделать, когда в столбцах есть только один уровень. Чтобы вас поняли, я создал следующий MRO, который воспроизводит мою идею и ошибки, которые я получаю:
import numpy as np
import pandas as pd

columns = pd.MultiIndex.from_tuples(
[
("Dimensions", "x"),
("Dimensions", "y"),
("Dimensions", "z"),
("Coefficient", ""),
("Comments", ""),
],
names=["Category", "Details"],
)

df = pd.DataFrame(index=range(11), columns=columns)
df[("Dimensions", "x")] = np.random.randint(1, 100, size=11)
df[("Dimensions", "y")] = np.random.randint(1, 100, size=11)
df[("Dimensions", "z")] = np.random.randint(1, 100, size=11)
df[("Coefficient", "")] = np.random.randint(1, 50, size=11) # Coefficient como entero aleatorio
df[("Comments", "")] = np.random.choice(["Good", "Average", "Bad"], size=11)
df["Comments"] = df["Comments"].astype("category")

# Basic metrics
print(df.groupby("Comments").mean()) # It works
print(df.groupby("Comments")["Dimensions"].mean()) # It works

# Selecting multiple columns within a MultiIndex based one. Different ideas I tried:
df.groupby("Comments")["Dimensions", "Coefficient"].mean() # It does not work
df.groupby("Comments")[["Dimensions", "Coefficient"]].mean() # It does not work
df.groupby("Comments").agg({"Dimensions": "mean", "Coefficient": "mean"}) # It does not work



Подробнее здесь: https://stackoverflow.com/questions/790 ... oupby-in-p

Вернуться в «Python»