1

我有一个带有 id 和 date 作为 2 列的 pandas 数据框 - 日期列一直到秒。

data = {'id':[17,17,17,17,17,18,18,18,18],'date':['2018-01-16','2018-01-26','2018-01-27','2018-02-11',
                                                  '2018-03-14','2018-01-28','2018-02-12','2018-02-25','2018-03-04'],
       }

df1 = pd.DataFrame(data)

我想要一个新专栏 - (tslt) - 'time_since_last_transaction'。每个唯一 user_id 的第一个事务可以是一个数字,比如 1。该用户的每个后续事务都应测量该用户的第一个时间戳与其当前时间戳之间的差异,以生成以秒为单位的时间差。

我使用了 datetime 和 timedelta 等,但运气不佳。任何帮助,将不胜感激。

4

1 回答 1

1

你可以试试groupby().transform()

df1['date'] = pd.to_datetime(df1['date'])

df1['diff'] = df1['date'].sub(df1.groupby('id').date.transform('min')).dt.total_seconds()

输出:

   id       date       diff
0  17 2018-01-16        0.0
1  17 2018-01-26   864000.0
2  17 2018-01-27   950400.0
3  17 2018-02-11  2246400.0
4  17 2018-03-14  4924800.0
5  18 2018-01-28        0.0
6  18 2018-02-12  1296000.0
7  18 2018-02-25  2419200.0
8  18 2018-03-04  3024000.0
于 2020-07-29T14:54:36.363 回答