Pandas 切分-应用-合并
我有一个数据集,里面包含用户ID、推文和创建日期。每个用户ID会有多条推文,且这些推文是在不同的日期创建的。我想找出推文的频率,所以我写了一个小计算,能告诉我每个用户ID每小时的推文数量。我用“分组”这个方法来实现,代码如下:
twitterDataFrame = twitterDataFrame.set_index(['CreatedAt'])
tweetsByEachUser = twitterDataFrame.groupby('UserID')
numberOfHoursBetweenFirstAndLastTweet = (tweetsByEachUser['CreatedAtForCalculations'].first() - tweetsByEachUser['CreatedAtForCalculations'].last()).astype('timedelta64[h]')
numberOfTweetsByTheUser = tweetsByEachUser.size()
frequency = numberOfTweetsByTheUser / numberOfHoursBetweenFirstAndLastTweet
当我打印出频率的值时,我得到了:
UserID
807095 5.629630
28785486 2.250000
134758540 8.333333
现在我需要回到我的大数据框(twitterDataFrame),把这些值和正确的用户ID放在一起。我该怎么做呢?我想说:
twitterDataFrame['frequency'] = the frequency corresponding to the UserID. e.g twitterDataFrame['UserID'] and the frequency value we got for that above.
不过我不太确定该怎么操作。有没有人知道我该如何实现这个?
1 个回答
2
你可以对你创建的 frequency
对象使用 join
操作,或者也可以一步完成:
get_freq = lambda ts: (ts.last() - ts.first()).astype('timedelta64[h]') / len(ts)
twitterDataFrame['frequency'] = twitterDataFrame.groupby('UserID')['CreatedAtForCalculations'].transform(get_freq)