У меня есть многоиндексный фрейм данных pandas со следующими данными:
F M
0 5 10 30
x y a1 0 1 0 1
a2 1 0 0 0
a3 0 1 0 1
a4 0 1 0 2
x1 y1 a1 0 1 1 4
a2 0 1 0 1
a3 1 1 0 1
a4 2 1 1 2
x2 y2 a1 0 0 0 0
a2 0 0 0 0
Я хочу сгруппировать данные по (A, B) и объединить столбец C в списке вместе с суммойстрок.
Требуемый вывод:
sex F M
counts 0 5 10 30 0 5 10 30
A B C
x y [a1,a2,a3, a4] 1 3 3 1 0 3 0 4
x1 y1 [a1, a2, a3, a4] 3 4 4 0 3 0 1 8
......
Я пробовал df.groupby(['A', 'B']).sum()
, но он игнорирует столбец C в выходном кадре данных.
Код дляВоспроизвести
index = pd.MultiIndex(levels=[['x', 'x1', 'x2'], ['y', 'y1', 'y2'], ['a1', 'a2', 'a3', 'a4']],
labels=[[0, 0, 0, 0, 1, 1, 1, 1, 2, 2], [0, 0, 0, 0, 1, 1, 1, 1, 2, 2], [0, 1, 2, 3, 0, 1, 2, 3, 0, 1]])
columns = pd.MultiIndex(levels=[['F', 'M'], [0, 5, 10, 30]],
labels=[[0, 0, 1, 1], [0, 1, 2, 3]])
data = np.array([
[0, 1, 0, 1],
[1, 0, 0, 0],
[0, 1, 0, 1],
[0, 1, 0, 2],
[0, 1, 1, 4],
[0, 1, 0, 1],
[1, 1, 0, 1],
[2, 1, 1, 2],
[0, 0, 0, 0],
[0, 0, 0, 0]])
df = pd.DataFrame(data, index=index, columns=columns)