查找每个类别组的所有“无”值的列

问题描述 投票:0回答:1

我有一个与这个虚构数据集类似的数据集

data = {'category':['foo','foo','foo','foo','foo','bar','bar','bar','bar','bar'],'part':['101','102','103','104','105','201','202','203','204','205'],'site_a':['yes','yes','no','no','no','no','yes','no','no','no'],'site_b':['no','no','no','no','no','no','yes','no','no','no'],'site_c':['yes','no','no','no','no','no','no','no','no','no']}

我需要按类别分组并过滤哪个网站的每个类别值都没有值。 'site_b' 对于类别 'foo' 为 true,'site_c' 对于类别 'bar' 为 true。 我想如果我将 yes 转换为 1,no 转换为 0,那么如果我使用 groupby,我就可以执行某种聚合函数。 我还在阅读有关多重索引的内容,但不确定如何迭代类别以查找哪些网站具有所有“无”值。

这就是我的多重索引的样子

df.set_index(['category','part'], inplace=True)
                      site_a    site_b  site_c
category    part            
foo         101       yes        no      yes
            102       yes        no      no
            103       no         no      no
            104       no         no      no
            105       no         no      no
bar         201       no         no      no
            202       yes        yes     no
            203       no         no      no
            204       no         no      no
            205       no         no      no

这样,如果站点不使用该类别中的某个部件,那么我会从每个站点的类别/部件列表中删除该类别。

非常感谢使用 groupby 或 multiindex 的指导

python pandas dataframe
1个回答
0
投票

IIUC,

df.set_index('category')[['site_a', 'site_b', 'site_c']].eq('no').groupby(level=0).all()

输出:

          site_a  site_b  site_c
category                        
bar        False   False    True
foo        False    True   False
© www.soinside.com 2019 - 2024. All rights reserved.