我有一个与这个虚构数据集类似的数据集
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 的指导
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