Pandas得到行组合和组

2024-05-08 17:56:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个df

enter image description here

我必须找到组的所有组合(比如说2对),然后必须跨唯一ID对它们进行分组

输出:

enter image description here

目前我找到了一种生成所有组合的方法,但似乎无法按唯一ID进行分组

我也提到了以下链接: Pandas find all combinations of rows under a budget

生成对的代码:

from itertools import combinations
li_4 =[]
for index in list(combinations(df.group.unique(),2)):
       li_4.append([index[0],index[1]])

1条回答
网友
1楼 · 发布于 2024-05-08 17:56:27

我们可以执行merge然后np.sort并在用drop_duplicates删除重复项后将结果传递给crosstab

s = df.merge(df,on='Id')
s['New'] = list(map(lambda x : ''.join(x),np.sort(s[['Group_x','Group_y']].values,axis=1).tolist()))
s = s.drop_duplicates(['Id','New'])
s = pd.crosstab(s.Id,s.New)
s
Out[88]: 
New  aa  ab  ac  ad  af  bb  bc  bd  be  bf  cc  cd  dd  de  ee  ff
Id                                                                 
2     1   1   1   1   0   1   1   1   0   0   1   1   1   0   0   0
3     0   0   0   0   0   1   0   1   1   0   0   0   1   1   1   0
4     1   1   0   0   1   1   0   0   0   1   0   0   0   0   0   1

相关问题 更多 >