pandas groupby:缺少组密钥?

时间:2016-11-09 04:15:11

标签: pandas group-by

在DataFrame" data_to_rank"中,我有一个列" r_DTS"。 data_to_rank [' r_DTS']显示:

>>> b = data_to_rank.groupby(['r_DTS'])
>>> for key, group in b: print(key)
Bottom
2
Top
Missing

当我这样做时:

>>> a = data_to_rank.groupby(['GRADE','r_DTS'])
>>> for key, group in a: print(key)
('HY', 'Bottom')
('HY', '2')
('HY', 'Top')
('IG', 'Bottom')
('IG', '2')
('IG', 'Top')

然而,当我按照&rbsp;< rdTS'与其他变量,"失踪" in" r_DTS" disapear。

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Loaded">
        <i:InvokeCommandAction Command="{Binding LoadedCommand}"/>
    </i:EventTrigger>
</i:Interaction.Triggers>

(&#39; HY&#39;,&#39; Missing&#39;)和(&#39; IG&#39;,&#39; Missing&#39;)

1 个答案:

答案 0 :(得分:1)

按分类分组时,它包括分组中的所有类别,甚至是没有分组的类别。

当您按多个项目进行分组时,即使所有项目都是分类dtypes,它也不会授予您相同的权限。

您必须构建自己的分类才能分组。这是如何做到这一点的一个例子:

cats = pd.MultiIndex.from_product([
        data_to_rank.GRADE.cat.categories,
        data_to_rank.r_DTS.cat.categories,
    ]).map(tuple)

categorical_to_group_by = pd.Categorical(
    data_to_rank[['GRADE', 'r_DTS']].apply(tuple, 1), cats
)

g = data_to_rank.groupby(categorical_to_group_by)

for name, group in g:
    print(name)

('HY', 'Bottom')
('HY', 2)
('HY', 'Top')
('HY', 'Missing')
('IG', 'Bottom')
('IG', 2)
('IG', 'Top')
('IG', 'Missing')