我的数据帧如下所示
ID Stage Recipe
1 ABC X
1 ABC D
1 ABC D
1 ABC D
2 ABC X
2 ABC X
1 BCD Y
1 CDE Y
我想要的是为一个特定的ID计算在特定阶段(相当于返工)出现多次的Recipe。
因此,此数据帧的输出应如下所示:
ID Rework_steps
1 2
2 1
非常感谢您的帮助!
发布于 2020-10-11 21:30:55
尝试使用@RubenHelslott建议的方式:
(df.groupby(['ID', 'Recipe'])['Stage'].nunique() == 1).sum(level=0)
输出:
ID
1 2
2 1
Name: Stage, dtype: int64
详细信息:
使用groupby
和nunique
计算每个ID和配方中唯一阶段的数量,然后查看该数字是否等于1,这将返回一个多索引布尔值系列。现在,我们可以使用带有参数level=0
的sum
将Trues求和到最外层的索引级别'ID‘。
发布于 2020-10-11 22:28:02
我现在实际上自己解决了这个问题,只需简单地计算重复的duplicates=`df[df.duplicated(subset=['ID','Stage','Recipe'])]
和duplicates.groupby('ID').size()
https://stackoverflow.com/questions/64304443
复制相似问题