Сначала сгенерируйте простой фрейм данных и примените групповое и числовое значение.
import pandas as pd
import random
letters = ['a', 'b', 'c', ]
nums = [ str(n) for n in range(1, 6)]
combs = [
[random.choice(letters), random.choice(nums)] for i in range(10)
]
combs_df = pd.DataFrame(combs)
combs_df
"""
0 1
0 c 3
1 a 4
2 b 1
3 a 2
4 a 2
5 c 1
6 a 3
7 c 1
8 c 2
9 b 1
"""
s1 = combs_df.groupby([0, 1])[1].count()
type(s1)
# pandas.core.series.Series
s1.index
"""
MultiIndex(levels=[['a', 'b', 'c'], ['1', '2', '3', '4']],
codes=[[0, 0, 0, 1, 2, 2, 2], [1, 2, 3, 0, 0, 1, 2]],
names=[0, 1])
"""
s1
"""
0 1<-----column 1
a 2 2
3 1<-- count
4 1 ...
b 1 2
c 1 2
2 1
3 1
Name: 1, dtype: int64
Я знаю, как реализовать это с помощью python для циклов.
Возможно ли с пандами из серии s1 создать фрейм данных, в котором столбец 1 из s1 становится заголовком таблицы, иподсчитать результаты агрегации в ячейках?Как пример ниже преобразованной формы s1:
"""
1 2 3 4 <-- nums
letters--> a 0 2 1 1
b 2 0 0 0 <-- count
c 2 1 1 0
"""