我是Pandas的新手,正在尝试做以下事情:
- 我有一个名为comms的数据帧,其中包括列articleID和commentScore等。
- 我还有另一个名为arts的数据帧,其中只包括列articleID。
我需要在arts中创建一个名为articleScore的新列。每篇文章必须具有该文章的文章得分,该得分是与该文章相关的所有评论分数之和(具有相同articleID),再除以sqrt(n_comms + 1),其中n_comms是具有该特定ID的评论数。
我已经成功实现了这一点,但效率非常低(如下所示)。
for article in arts:
n, tempScore = 0
for i, value in comms.iterrows():
if value['articleID'] == article['articleID']:
tempScore + = value['commentScore']
n += 1
article['articleScore'] /= math.sqrt(n+1)
编辑:以下是我希望发生的示例:
comms:
__________________________
| # | artID | commScore |
| 0 | 1x5w | 2 |
| 1 | 77k3 | 1 |
| 2 | 77k3 | -1 |
| 3 | 3612 | 5 |
| 4 | 1x5w | 3 |
--------------------------
arts:
___________________________
| # | artID | artScore (?) |
| 0 | 1x5w | 2.89 |
| 1 | 77k3 | 0 |
| 2 | 3612 | 3.54 |
-------------------------
我需要(创建并)填写artScore列。每个artScore是评论分数的总和,但仅限于文章具有相同artID的评论,除以sqrt(n+1)。
谁能帮帮我?非常感谢!
Andrea