计算Pandas Dataframe 相对于第一个值的时间差

vcirk6k6  于 2023-03-11  发布在  其他
关注(0)|答案(2)|浏览(150)

我有一个问题,看起来有点类似[这一个][1],但我不知道如何修改那里给出的答案,以适应我的问题。
我有一个 Dataframe ,看起来像这样:

Date                   user
2012-12-05 09:30:00    0
2012-12-05 09:35:00    1
2012-12-05 09:40:00    2
2012-12-05 09:45:00    3
2012-12-05 09:50:00    4
2012-12-06 09:30:00    5
2012-12-06 09:35:00    6
2012-12-06 09:40:00    7
2012-12-06 09:45:00    8

我想计算用户1、2、3......和用户0之间的相对时间差。应将此值添加到第三列(最好以秒为单位)。因此,在此示例中,结果应为:

Date                   user     diff
2012-12-05 09:30:00    0        0
2012-12-05 09:35:00    1        300
2012-12-05 09:40:00    2        600
2012-12-05 09:45:00    3        900
2012-12-05 09:50:00    4        1200
2012-12-06 09:30:00    5        1500
2012-12-06 09:35:00    6        1800
2012-12-06 09:40:00    7        2100
2012-12-06 09:45:00    8        2400

我正在查看提供的答案,但我不认为我可以在这里使用group_by。我有点卡住了。[1]:Pandas - Calculating daily differences relative to earliest value

7cwmlq89

7cwmlq891#

您可以减去最小值,并通过Series.dt.total_seconds将时间增量转换为秒:

df.Date = pd.to_datetime(df.Date)

df['diff'] = df.Date.sub(df.Date.min()).dt.total_seconds()
print (df)
                 Date  user     diff
0 2012-12-05 09:30:00     0      0.0
1 2012-12-05 09:35:00     1    300.0
2 2012-12-05 09:40:00     2    600.0
3 2012-12-05 09:45:00     3    900.0
4 2012-12-05 09:50:00     4   1200.0
5 2012-12-06 09:30:00     5  86400.0
6 2012-12-06 09:35:00     6  86700.0
7 2012-12-06 09:40:00     7  87000.0
8 2012-12-06 09:45:00     8  87300.0
lndjwyie

lndjwyie2#

您可以对第一个值执行subtract操作,得到total_seconds

df['Date'] = pd.to_datetime(df['Date'])

df['diff'] = df['Date'].sub(df['Date'].iloc[0]).dt.total_seconds()

输出:

Date  user     diff
0 2012-12-05 09:30:00     0      0.0
1 2012-12-05 09:35:00     1    300.0
2 2012-12-05 09:40:00     2    600.0
3 2012-12-05 09:45:00     3    900.0
4 2012-12-05 09:50:00     4   1200.0
5 2012-12-06 09:30:00     5  86400.0
6 2012-12-06 09:35:00     6  86700.0
7 2012-12-06 09:40:00     7  87000.0
8 2012-12-06 09:45:00     8  87300.0

相关问题