我有一个包含客户建议的数据透视图,如下所示:
我想重塑此数据框或形成另一个新数据框,其中包含CustomerID列和4个新的附加列,分别称为“ Recommendation#1”,“ Recommendation#2”,“ Recommendation#3”和“ Recommendation#4”,其中每列将具有每个客户得分最高的4个项目。我试图使它看起来像这样:
但是,我对如何在python中实现此目的,从枢轴数据帧中获取所需数据帧感到迷茫。任何有关如何解决此问题的帮助或建议,将不胜感激!
最佳答案
您可以使用argsort
并在每行中保留最高的n
元素:
n=4
data = df.values.argsort().T[::-1].T[:,:n]
然后从获得的数组和您指定的列中构建一个数据框:
columns = ['Recommendation#{}'.format(i) for i in range(1,data.shape[1]+1)]
df = pd.DataFrame(df.columns[data], columns=columns, index = df.index)
print(df)
Recommendation#1 Recommendation#2 Recommendation#3 Recommendation#4
ID1 Item4 Item2 Item8 Item6
ID2 Item5 Item1 Item4 Item6
ID3 Item7 Item6 Item8 Item3
关于python - 从数据透视表重塑/转换Pandas数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53634112/