I have a dataframe (df) with the following structure:
| retweet_datetime | 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 |
The retweet_datetime is sorted from latest to newest retweets.
I'd like to create two new columns as follows:
tweet_lifetime1: the difference between the last retweet time and the first retweet time, i.e., for each tweet_id: last retweet_datetime - first retweet_datetimetweet_lifetime2: the difference between the last retweet time and tweet creation time (tweet_datetime)
Update
For example, for the tweet 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)
The expected output df:
| retweet_datetime | tweet_id | tweet_datetime | lifetime1 | 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 |
I've seen several similar posts, but they mostly subtract consecutive rows. For example, I can subtract the time difference between each retweet_datetimes for each tweet id as follows:
df2 = df.assign(delta = df.groupby('tweet_id')['retweet_datetime'].diff())