gpt4 book ai didi

python - 如何使用python计算数据框中特定行值之间的时间差?

转载 作者:太空狗 更新时间:2023-10-30 02:50:45 27 4
gpt4 key购买 nike

df 如下所示:


Time A

2019-05-18 01:15:28 7
2019-05-18 01:28:11 7
2019-05-18 01:36:36 12
2019-05-18 01:39:47 12
2019-05-18 01:53:32 12
2019-05-18 02:05:37 7

我了解如何计算连续行时间差。但是我想计算 A 中的值是 7 到 12 时的时间差。

预期输出:


Time A Time_difference

2019-05-18 01:15:28 7 0
2019-05-18 01:28:11 7 0
2019-05-18 01:36:36 12 00:21:08
2019-05-18 01:39:47 12 0
2019-05-18 01:53:32 12 0
2019-05-18 02:05:37 12 0

最佳答案

您可以使用 loc 隔离数据框中的任何值。返回的是一个系列,它可以像列表一样被索引。使用 [0] 获取系列中的第一次出现。

times = [
'2019-05-18 01:15:28',
'2019-05-18 01:28:11',
'2019-05-18 01:36:36',
'2019-05-18 01:39:47',
'2019-05-18 01:53:32',
'2019-05-18 02:05:37'
]

a = [9, 7, 7, 5, 12, 12]

df = pd.DataFrame({'times':times, 'a':a})
df.times = pd.to_datetime(df['times'])
pd.Timedelta(df.loc[df.a == 12, 'times'].values[0] - df.loc[df.a == 7, 'times'].values[0])

Timedelta('0 days 00:25:21')

或者为了可读性,我们可以将代码拆分开,然后对新变量进行计算:

times = [
'2019-05-18 01:15:28',
'2019-05-18 01:28:11',
'2019-05-18 01:36:36',
'2019-05-18 01:39:47',
'2019-05-18 01:53:32',
'2019-05-18 02:05:37'
]

a = [9, 7, 7, 5, 12, 12]

df = pd.DataFrame({'times':times, 'a':a})
df.times = pd.to_datetime(df['times'])
end = df.loc[df.a == 12, 'times'].values[0]
start = df.loc[df.a == 7, 'times'].values[0]
pd.Timedelta(end - start)

Timedelta('0 days 00:25:21')

关于python - 如何使用python计算数据框中特定行值之间的时间差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58094422/

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