Pandas 切分-应用-合并

1 投票
1 回答
594 浏览
提问于 2025-04-18 13:59

我有一个数据集,里面包含用户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)

撰写回答