0

我在熊猫中有以下数据透视表:

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)

我可以知道我该怎么做吗?谢谢

4

1 回答 1

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)
于 2013-09-20T09:39:19.727 回答