У меня есть daframe, в котором я хочу выполнить несколько (независимых) преобразований, и они создают новый фрейм данных (с мультииндексом), где каждый индекс соответствует одному из преобразований.
Подробнее конкретно:
df = pd.DataFrame([[1, "X", 'H', 100], [2, "Y", 'K', 100] ,[3, "X", 'H', 200], [4, "Y", 'H', 100]], columns=['id', 'XY', 'HK', 'A']).set_index("id")
XY HK A
id
1 X H 100
2 Y K 100
3 X H 200
4 Y H 100
Теперь я хочу знать, сколько XY
и сколько HK
имеют одинаковые A
. Окончательные результаты должны выглядеть так (с мультииндексом):
XY HK
X Y H K
A
100 1.0 2.0 2.0 1.0
200 1.0 NaN 1.0 NaN
Это то, что я ожидал от работы:
df.groupby(['A', 'XY', 'HK']).count()
, но он содержит только мультииндекс без значения.
То, что я смог сделать, это:
подсчитать XY
:
xy_count = df.groupby(['A', 'XY']).count().HK.unstack()
count HK
:
hk_count = df.groupby(['A', 'HK']).count().XY.unstack()
объединить результаты (?)
results = pd.DataFrame()
results['XY'] = xy_count
results['HK'] = hk_count
, но эта последняя часть теперь работает.
Итак, мои вопросы:
Q1: Кажется, есть лучший способ, который мне не хватает Q2: почему шаг 3 не работает?
Не совсем вопрос, но также Меня сбивает с толку то, что для получения HK необходимо вызвать столбец XY и наоборот.