如何将两列互换分组?

问题描述

如何将两列互换分组?

例如,如果我有这张桌子

image with two columns of variables

我想得到

image with 3 columns of desired variables

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

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

The resulting table

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

解决方法

DataFrame较短的示例:

df = pd.DataFrame({'name1': ['Alex','Alex','Sarah','Martin'],'name2': ['Martin','Martin','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