【发布时间】:2020-12-25 01:41:16
【问题描述】:
我有以下 2 个数据帧 question_posts 和 nice_question。 question_posts 为每个用户提供多个条目,而 nice_question 具有唯一的 UserId 值。
部分 question_posts
OwnerUserId | CreationDate | Score
981 |2009-09-28 16:11:38.533 | 50
483 | 2009-10-18 15:11:20.533 | 700
698 | 2010-09-28 16:11:35.533 | 0
10 | 2009-01-28 10:12:38.7 | 200
nice_question 的一部分
UserId | Date
981 | 2009-10-17 17:38:32.59
10 | 2009-10-20 08:37:14.143
290 | 2009-10-20 18:07:51.247
699 | 2009-10-20 21:25:24.483
我想在 nice_question 数据帧中创建一个名为 Quality Factor 的新功能,它应该基于从 question_posts 数据帧获得的 average score = total score/total posts。对于用户在nice_question 中提供的date 之前发布的帖子,应计算average score。
我尝试了以下代码,但出现错误。
代码
nice_question['Quality Factor'] = (question_posts.loc[question_posts['CreationDate']<nice_question['date']]).sum()
错误
Can only compare identically-labeled Series objects
预期输出
>>nice_question.head(4)
>> UserId | Date | Quality Factor
981 | 2009-10-17 17:38:32.59 | 5
10 | 2009-10-20 08:37:14.143 | 16
290 | 2009-10-20 18:07:51.247 | 66
699 | 2009-10-20 21:25:24.483 | 9
【问题讨论】:
-
我不明白预期的结果。用户981只有一个问题,50分。为什么质量因素/平均分是5? (同样的问题也适用于其他用户)。
-
@Roy2012 这只是数据的一部分,数据框
question_posts具有同一用户的多个条目(上述问题中没有提到所有这些条目,这就是Quality Factor的原因不匹配)。第二个数据框nice_question仅具有唯一的UserId值,因为我们进行所需的聚合以找到Quality Factor的值。 -
在下面查看我的答案。希望这会有所帮助。
标签: python pandas dataframe datetime group-by