/ / Застосування сукупної функції на стовпцях зведеної таблиці Pandas - панд, pivot-table

Застосування сукупної функції на стовпці стрижневої таблиці Pandas - pandas, pivot-table

Я згенерував наступну зведену таблицю через максимум значень Z колонка:

   val
X   x1     x2
Y   y1  y2 y1  y2
ID
a    9   1  5  11
b    8  10  7   6

Після прийому макс Z значення, я повинен повідомити mean(y1,y2). Бажана таблиця:

    val
X    x1          x2
Y    mean(y1,y2) mean(y1,y2)
ID
a    5           8
b    9           6.5

Як я можу досягти цього за допомогою панд?

Мій MWE:

#!/usr/bin/python
from pandas import DataFrame
import pandas as pd
import numpy as np

data=pd.read_table("data.txt")
pv=data.pivot_table(index=["ID"], columns=["X","Y"], values=["val"], aggfunc=np.max )
print pv

data.txt:

ID  X   Y   Z   val
a   x1  y2  z1  1
b   x1  y1  z2  2
a   x2  y2  z2  3
a   x1  y1  z4  4
a   x2  y1  z1  5
b   x2  y2  z3  6
b   x2  y1  z2  7
b   x1  y1  z3  8
a   x1  y1  z3  9
b   x1  y2  z3  10
a   x2  y2  z2  11

Відповіді:

2 для відповіді № 1

Ви можете пройти a level param і axis для розрахунку mean для бажаного рівня осі:

In [142]:
pv.mean(level="X", axis=1)

Out[142]:
X   x1   x2
ID
a    5  8.0
b    9  6.5