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