df = pd.DataFrame({'col1': [1,2,4,3], 'col2': [2,1,3,4]})
col1 col2
0 1 2
1 2 1
2 4 3
3 3 4
期望的結果
col1 col2 count
0 1 2 2
1 4 3 2
我試過
(df.groupby(['team1','team2']).size()
.sort_values(ascending=False)
.reset_index(name='Count')
)
但這并沒有給我獨特的組合
uj5u.com熱心網友回復:
你也做這樣的事情,
df.apply(set, axis=1).value_counts()
輸出:
{1, 2} 2
{3, 4} 2
dtype: int64
uj5u.com熱心網友回復:
IIUC,您可以先從frozenset兩列計算 a ,然后使用 named aggregation:
# compute unordered grouper
group = df[['col1', 'col2']].agg(frozenset, axis=1)
# craft a dictionary of expected output
# first rows for the existing columns new column for count
d = {c: (c, 'first') for c in df}
d.update({'count': ('col1', 'count')})
# {'col1': ('col1', 'first'),
# 'col2': ('col2', 'first'),
# 'count': ('col1', 'count')}
# perform the aggregation
df.groupby(group, as_index=False).agg(**d)
輸出:
col1 col2 count
0 1 2 2
1 4 3 2
uj5u.com熱心網友回復:
讓我們檢查一下
df[:] = np.sort(df.to_numpy(),axis=1)
df.value_counts()
Out[132]:
col1 col2
1 2 2
3 4 2
dtype: int64
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/458764.html
標籤:Python 熊猫 数据框 熊猫-groupby
