regrouper les données pandas par deux colonnes (ou plus)?

J'ai le texte suivant dataframe:

mydf = pandas.DataFrame({"cat": ["first", "first", "first", "second", "second", "third"], "class": ["A", "A", "A", "B", "B", "C"], "name": ["a1", "a2", "a3", "b1", "b2", "c1"], "val": [1,5,1,1,2,10]})

Je veux créer un dataframe qui rend résumé des statistiques sur les val colonne d'éléments avec le même class id. Pour cela, j'utilise groupby comme suit:

mydf.groupby("class").val.sum()

c'est le comportement correct, mais je tiens à conserver le cat l'information de la colonne dans le résultat de df. peut-on le faire? dois-je merge/join l'information au plus tard? J'ai essayé:

mydf.groupby(["cat", "class"]).val.sum()

mais il utilise hiérarchique de l'indexation. J'aimerais avoir une plaine dataframe dos qui a juste l' cat valeur pour chaque groupe, où le groupe en est class. La sortie doit être un dataframe (pas de série) avec les valeurs du chat et de la classe, où l' val entrées sont additionnés pour chaque entrée qui a le même class:

cat     class    val
first   A         7
second  B         3
third   C        10

est-ce possible?

source d'informationauteur user248237dfsf