在Python中,可以使用pandas库轻松地解决这个问题。如果有一个数据框df,其中包含两列A和B,如下所示:
A B 1 A 2 B 3 A 4 C 5 B
要按A列和B列分别计数,可以使用如下代码:
df.groupby(['A', 'B']).size()
这将返回一个Series对象,其中包含按组计数的计数。要将包含在两个(或更多)组中的项分开,可以使用reset_index()方法,并将重置后的数据框与原始数据框拼接在一起,如下所示:
counts = df.groupby(['A', 'B']).size().reset_index(name='count') both_groups = counts[counts.duplicated(subset='A', keep=False)] in_a_only = counts[(~counts.isin(both_groups)).all(axis=1)] in_b_only = counts[((counts['A'].isin(both_groups['A'])) & (~counts.isin(both_groups)).all(axis=1))]
这将创建一个包含在两个组中的项both_groups,以及仅在A组或B组中出现的项in_a_only和in_b_only。
上一篇:按组计数并分配给新变量
下一篇:按组计数和筛选;行转列转换