我在pandas中有以下数据透视表:
Rating 1 2 3 4 5
MovieTitle
1-900 (1994) 2 0 1 2 0
101 Dalmatians (1996) 15 17 46 25 6
12 Angry Men (1957) 0 1 15 49 60
187 (1997) 5 8 13 11 4
我需要通过计算加权分数来创建一个新列。该公式将产生电影“101 Dalmatians(1996)”的得分:
score = (15*1) + (17*2) + (46*3) + (25*4) + (6*5)
我可以知道我该怎么办? 感谢
答案 0 :(得分:1)
您只需执行与公式中指定完全相同的操作:)
>>> (df[1] * 1) + (df[2] * 2) + (df[3] * 3) + (df[4] * 4) + (df[5] * 5)
MovieTitle
1-900 (1994) 13
101 Dalmatians (1996) 317
12 Angry Men (1957) 543
187 (1997) 124
dtype: int64
或者由于电影标题是DataFrame的索引,并且您只有评级列,您可以这样做:
>>> weights = np.array([1,2,3,4,5])
>>> (df * weights).sum(axis=1)
MovieTitle
1-900 (1994) 13
101 Dalmatians (1996) 317
12 Angry Men (1957) 543
187 (1997) 124
dtype: int64
如果需要,可以将其分配给DataFrame:
>>> df['score'] = (df * weights).sum(axis=1)