我有以下数据框:
df = pd.DataFrame({'recipe': ['a', 'a', 'a', 'a', 'a','a', 'b', 'b', 'b', 'b', 'b','b'],
'product': ['A', 'B', 'C', 'D', 'E', 'F', 'A', 'B', 'G', 'I', 'K', 'F']})
我想将输出的数据框旋转为每个配方有一行,每种产品有多列,例如:
recipe p1 p2 p3 p4 p5 p6
a A B C D E F
b A B G I K F
另外,有多种产品,但是我希望排名前6位的商品能根据产品的相关性进行排名
答案 0 :(得分:4)
这实际上是一个groupby
和unnesting问题。
u = df.groupby('recipe')['product'].apply(list)
pd.DataFrame(u.tolist(), index=u.index).rename(lambda x: 'p{}'.format(x+1), axis=1)
p1 p2 p3 p4 p5 p6
recipe
a A B C D E F
b A B G I K F