首页 > 解决方案 > 如何按两列交替分组?

问题描述

如何按两列交替分组?

例如,如果我有这张桌子

具有两列变量的图像

我想得到

具有 3 列所需变量的图像

但是,当我使用时,我得到了这个

df.insert(2, 'Count', df.groupby(['Name1','Name2'])['Name1'].transform('size'))

结果表

具有相同名称但交换的条目(行)被认为是新条目,但我想以同样的方式对待它们,你能告诉我一种方法吗?

标签: pythondataframegroup-bymultiple-columnscounting

解决方案


较短 DataFrame 的示例:

df = pd.DataFrame({'name1': ['Alex', 'Alex', 'Sarah', 'Martin'], 'name2': ['Martin', 'Martin', 'Alex', 'Alex']})

df['tmp'] = df.apply(frozenset, axis=1)
df['count'] = df.groupby('tmp')['name1'].transform('size')
df = df.set_index('tmp')
df = df[~df.index.duplicated()].reset_index(drop=True)
print(df)

印刷:

   name1   name2  count
0   Alex  Martin      3
1  Sarah    Alex      1

推荐阅读