首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas获得行组合和分组

问Pandas获得行组合和分组
EN

Stack Overflow用户
提问于 2021-05-19 07:07:55
回答 1查看 31关注 0票数 2

我有一个df

​

​

我必须找到Group的所有组合(假设是2对),然后必须跨唯一ID对它们进行分组

输出:

​

​

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

我也参考了下面的链接:Pandas find all combinations of rows under a budget

生成配对的代码:

代码语言:javascript
复制
from itertools import combinations
li_4 =[]
for index in list(combinations(df.group.unique(),2)):
       li_4.append([index[0],index[1]])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-19 07:15:33

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

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67595026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档