我在pandas df中有一张桌子
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,b-c,c-d
的组合
类似地,b有combinations(b-c,c-d,d-a) and also a-b to be considered as a combination for b( a-b = b-a)
并创建一个具有
的数据帧df2id combinations count
a b,c,d 3
b c,d,a 3
c d,a,b 3
d a,b,c 3
and so on ..(distinct product_id_'s)
以及我是否可以将每个组合放在数据框的不同列中
id c1 c2 c3...&so on count
a b c d 3
b c d a 3
我应该遵循什么方法? 我在python上的技巧处于初级水平。 提前谢谢。
答案 0 :(得分:1)
您可以尝试以下方式:
#generate dataframe
pdf = pd.DataFrame(dict(id_x = ['a','b','c','d','b'], id_y = ['b', 'c', 'd', 'a', 'a']))
#generate second dataframe with swapped columns:
pdf_swapped = pdf.rename(columns = dict(id_x= 'id_y', id_y= 'id_x'))
#append both dataframes to each other
pdf_doubled = pd.concat([pdf, dummy_pdf])
#evaluate the frequency of each combination:
result = pdf_doubled.groupby('id_x').apply(lambda x: x.id_y.value_counts())
这给出了以下结果:
a b 2
d 1
b a 2
c 1
c b 1
d 1
d c 1
a 1
要弄清楚,组合a-b的频率如何,你可以简单地做到:
result['a', 'b']