从Pandas数据透视表创建加权分数列

时间:2013-09-20 09:03:29

标签: python pandas pivot-table weighted

我在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)

我可以知道我该怎么办? 感谢

1 个答案:

答案 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)