gpt4 book ai didi

python - 将整数列转换为 HH :MM:SS format efficiently 中的时间

转载 作者:太空宇宙 更新时间:2023-11-03 12:43:26 30 4
gpt4 key购买 nike

我正在尝试开发一个更高效的 loop 来完成一个问题。目前,如果 string 与特定值对齐,下面的代码将应用它。但是,这些值的顺序相同,因此 loop 可以使此过程更高效。

以下面的df为例,使用整数来表示时间段,每增加一个整数就相当于一个15分钟的时间段。所以 1 == 8:00:002 == 8:15:00 等等。目前我会重复这个过程直到最后一个时间段。如果达到 80,它可能会变得非常低效。可以在此处合并一个循环吗?

import pandas as pd

d = ({
'Time' : [1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6],
})

df = pd.DataFrame(data = d)

def time_period(row) :
if row['Time'] == 1 :
return '8:00:00'
if row['Time'] == 2 :
return '8:15:00'
if row['Time'] == 3 :
return '8:30:00'
if row['Time'] == 4 :
return '8:45:00'
if row['Time'] == 5 :
return '9:00:00'
if row['Time'] == 6 :
return '9:15:00'
.....
if row['Time'] == 80 :
return '4:00:00'

df['24Hr Time'] = df.apply(lambda row: time_period(row), axis=1)

print(df)

输出:

    Time 24Hr Time
0 1 8:00:00
1 1 8:00:00
2 1 8:00:00
3 2 8:15:00
4 2 8:15:00
5 2 8:15:00
6 3 8:30:00
7 3 8:30:00
8 3 8:30:00
9 4 8:45:00
10 4 8:45:00
11 4 8:45:00
12 5 9:00:00
13 5 9:00:00
14 5 9:00:00
15 6 9:15:00
16 6 9:15:00
17 6 9:15:00

最佳答案

这可以通过一些简单的时间增量算法实现:

df['24Hr Time'] = (
pd.to_timedelta((df['Time'] - 1) * 15, unit='m') + pd.Timedelta(hours=8))
df.head()

Time 24Hr Time
0 1 08:00:00
1 1 08:00:00
2 1 08:00:00
3 2 08:15:00
4 2 08:15:00

df.dtypes

Time int64
24Hr Time timedelta64[ns]
dtype: object

如果您需要字符串,请使用带单位和原点的 pd.to_datetime:

df['24Hr Time'] = (
pd.to_datetime((df['Time']-1) * 15, unit='m', origin='8:00:00')
.dt.strftime('%H:%M:%S'))
df.head()

Time 24Hr Time
0 1 08:00:00
1 1 08:00:00
2 1 08:00:00
3 2 08:15:00
4 2 08:15:00

df.dtypes

Time int64
24Hr Time object
dtype: object

关于python - 将整数列转换为 HH :MM:SS format efficiently 中的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56640375/

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