Python 一列与其他列的组合总数

Python 一列与其他列的组合总数,python,pandas,Python,Pandas,我有一张桌子 id_x id_y a b b c c d d a b a and so on around (1000 rows) 我想找到每个id_x和id_y的组合数 即:a有a-b、d-a的组合(共2个组合) 类似地,b总共有2个组合(b-c),a-b也被视为b的组合(a-b=b-a)

我有一张桌子

 id_x             id_y
  a                 b
  b                 c
  c                 d
  d                 a
  b                 a
and so on around (1000 rows)
我想找到每个id_x和id_y的组合数

即:a有
a-b、d-a的组合(共2个组合)
类似地,b总共有
2个组合(b-c),a-b也被视为b的组合(a-b=b-a)

并创建一个具有

id   combinations
a          2
b          2
c          2    #(c-d and b-c)
d          1
and so on ..(distinct product_id_'s)
我试着做这个代码

df.groupby(['id_x']).size().reset_index()
但是得到了错误的结果

   id_x  0
0   a    1
1   b    1
2   c    1
3   d    1
我应该采取什么方法? 我的python技能处于初级水平。
提前感谢。

您可以先按
应用
排序的所有行,然后按创建
系列
,最后:


您可以首先按
应用
排序
对所有行进行排序,然后按创建
系列
,最后:


@耶斯雷尔这是我的question@jezrael这是我的问题,但假设我有a-b和b-a,排序后将b-a转换为a-b,因此b的计数应该是2(b-c和b-a),现在只有1@我不想要组合是
d
2
?是否?因为
d-a
d-c
是的,我正在检查代码,你能解释一下你应用的逻辑吗?我的意思是我不知道
stack()
value\u counts()
做了什么,但是说,我有a-b和b-a,排序后会将b-a转换为a-b,因此b的计数应该是2(b-c和b-a)现在只有1@我不想要组合是
d
2
?是否?因为
d-a
d-c
是的,我正在检查代码,你能解释一下你应用的逻辑吗?我的意思是我不知道
stack()
value\u counts()
做什么
df = df.apply(sorted,axis=1).drop_duplicates().stack().value_counts()
print (df)
d    2
a    2
b    2
c    2
dtype: int64