如何按两列互换分组?
How can I group by two columns interchangeably?
如何按两列交替分组?
例如,如果我有这个 table
我想得到
但是,我在使用
时却得到了这个
df.insert(2, 'Count', df.groupby(['Name1','Name2'])['Name1'].transform('size'))
具有相同名称但交换的条目(行)被认为是新条目,但我想以同样的方式对待它们,你能告诉我一个方法吗?
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
如何按两列交替分组?
例如,如果我有这个 table
我想得到
但是,我在使用
时却得到了这个df.insert(2, 'Count', df.groupby(['Name1','Name2'])['Name1'].transform('size'))
具有相同名称但交换的条目(行)被认为是新条目,但我想以同样的方式对待它们,你能告诉我一个方法吗?
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