gpt4 book ai didi

python - 从 Pandas Dataframe 中每个 Id 的第一个时间戳中减去最后一个时间戳

转载 作者:行者123 更新时间:2023-12-05 01:04:09 28 4
gpt4 key购买 nike

我有一个具有以下结构的数据框 (df):

<头>
转推日期时间 tweet_id tweet_datetime
2020-04-24 03:33:15 85053699 2020-04-24 02:28:22
2020-04-24 02:43:35 85053699 2020-04-24 02:28:22
2020-04-18 04:24:03 86095361 2020-04-18 00:06:01
2020-04-18 00:19:08 86095361 2020-04-18 00:06:01
2020-04-18 00:18:38 86095361 2020-04-18 00:06:01
2020-04-18 00:07:08 86095361 2020-04-18 00:06:01

retweet_datetime 是从最新到最新的转推排序。

我想创建两个新列,如下所示:

  1. tweet_lifetime1:最后一次转推时间和第一次转推时间的差值,即对于每个tweet_id:last retweet_datetime - first retweet_datetime
  2. tweet_lifetime2:上次转发时间与推文创建时间的差值(tweet_datetime)

更新

例如,对于推文 ID:“86095361”:

  • tweet_lifetime1 = 2020-04-18 04:24:03 - 2020-04-18 00:07:08 (04:16:55)
  • tweet_lifetime2 = 2020-04-18 04:24:03 - 2020-04-18 00:06:01 (04:18:02)

预期输出df:

<头>
转推日期时间 tweet_id tweet_datetime 一生1 lifetime2
2020-04-24 03:33:15 85053699 2020-04-24 02:28:22 00:49:40 01:04:53
2020-04-18 04:24:03 86095361 2020-04-18 00:06:01 04:16:55 04:18:02

我看过几个类似的帖子,但它们大多是减去连续的行。例如,我可以为每个 tweet id 减去每个 retweet_datetimes 之间的时间差,如下所示:

df2 = df.assign(delta = df.groupby('tweet_id')['retweet_datetime'].diff())

最佳答案

Groupby 和 agg 使用 first 选择每组的第一行,然后 groupby 和 agg retweet_datetime 使用 last 选择每组的最后一个值.然后 join 聚合数据帧并通过减去相关列来计算 lifetime1lifetime2

g = df.groupby('tweet_id')
s = g.first().join(g['retweet_datetime'].agg(['last']))

s['lifetime1'] = s['retweet_datetime'] - s.pop('last')
s['lifetime2'] = s['retweet_datetime'] - s['tweet_datetime']

            retweet_datetime      tweet_datetime       lifetime1       lifetime2
tweet_id
85053699 2020-04-24 03:33:15 2020-04-24 02:28:22 0 days 00:49:40 0 days 01:04:53
86095361 2020-04-18 04:24:03 2020-04-18 00:06:01 0 days 04:16:55 0 days 04:18:02

关于python - 从 Pandas Dataframe 中每个 Id 的第一个时间戳中减去最后一个时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72863564/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com