Группировка DataFrame поддерживает группирование по спискам столбцов в таблице, например, с учетом:
from pandas import DataFrame as DF
data2 = [{'a':{'x':1,'y':2},'b':2, 'x0':1},{'a':{'x':3,'y':4},'b':4, 'x0':3},{'a':{'x':1,'y':6},'b':6, 'x0':1}]
(для иллюстрации обратите внимание, что столбец «x0» дублирует «x» во вложенном dict)
Работает как задумано:
DF(data2).groupby(['x0','b']).size().unstack()
![enter image description here](https://i.stack.imgur.com/wRfVX.png)
Как эмулировать это поведение, подставляя вложенный 'x'
вместо 'x0'
?
Я пробовал подход, использующий lambda
для вывода кортежа:
DF(data2).groupby(lambda i: (data2[i]['a']['x'],data2[i]['b'])).size()
(1, 2) 1
(1, 6) 1
(3, 4) 1
dtype: int64
, где data2[i]['x0']
также работает как первый элемент кортежа. В обоих случаях unstack
бросков:
AttributeError: 'Index' object has no attribute 'remove_unused_levels'
Таким образом, имена столбцов / ключей не обрабатываются должным образом. Есть ли обходной путь на месте, то есть без установки новых переменных или DataFrames?