У меня есть фрейм данных, который использует MultiIndex для индекса и столбцов. Например:
df = pd.DataFrame(index=pd.MultiIndex.from_product([[1,2], [1,2,3], [4,5]], names=['i','j', 'k']), columns=pd.MultiIndex.from_product([[1,2], [1,2]], names=['x', 'y']))
for c in df.columns:
df[c] = np.random.randint(100, size=(12,1))
x 1 2
y 1 2 1 2
i j k
1 1 4 10 13 0 76
5 92 37 52 40
2 4 88 77 50 22
5 75 31 19 1
3 4 61 23 5 47
5 43 68 10 21
2 1 4 23 15 17 5
5 47 68 6 94
2 4 0 12 24 54
5 83 27 46 19
3 4 7 22 5 15
5 7 10 89 79
Я хочу сгруппировать значения по имени в индексе и по имени в столбцах. Для каждой такой группы у нас будет двумерный массив чисел (а не ряд). Я хочу объединить std()
всех записей в этом двумерном массиве.
Например, скажем, я группирую ['i', 'x']
, одна группа будет иметь значения i=1
и x=1
. Я хочу вычислить std
для каждого из этих двухмерных массивов и получить DataFrame
со значениями i
в качестве индекса и значениями x
в виде столбцов.
Каков наилучший способ достижения этого?
Если я сделаю stack()
, чтобы получить x
в качестве индекса, я все равно буду вычислять несколько std()
вместо одного, так как все еще будет несколько столбцов.