gpt4 book ai didi

python - 如何使用 Pandas 从三列创建时间值

转载 作者:行者123 更新时间:2023-12-05 06:55:20 25 4
gpt4 key购买 nike

我面临一项相当简单的任务:从我的 SQL 查询中,我收到了三个不同的列:一个用于小时,一个用于分钟,一个用于秒。我希望将它们组合成一个时间值。

我的方法是应用 dt.time 函数:

# Import relevant libraries
import datetime as dt
from timeit import timeit
import pandas as pd
import numpy as np

# Create an example Dataframe
rng = np.random.default_rng()
test = pd.DataFrame({"hours": rng.integers(0,24,1000000)
, "minutes" : rng.integers(0, 60, 1000000)
, "seconds": rng.integers(0, 60, 1000000)
})

# Create my time function
test["time"] = test.apply(lambda x: dt.time(x.hours, x.minutes, x.seconds), axis = 1)

在我的真实场景中,结果慢得离谱,大约 4 Mio 的时间超过 6 分钟。行。

最佳答案

Apply 似乎相当慢,使用 map 函数时可以更快地获得结果:

import datetime as dt
from timeit import timeit
import pandas as pd
import numpy as np

rng = np.random.default_rng()
test = pd.DataFrame({"hours": rng.integers(0,24,1000000)
, "minutes" : rng.integers(0, 60, 1000000)
, "seconds": rng.integers(0, 60, 1000000)
})

%%timeit
test["time"] = test.apply(lambda x: dt.time(x.hours, x.minutes, x.seconds), axis = 1)

%%timeit
test["time_map"] = list(map(lambda hours, minutes, seconds: dt.time(hours, minutes, seconds)
, test.hours
, test.minutes
, test.seconds)
)

第一个版本只需短短 16 秒,第二个方法只需半秒。这快了 30 多倍。

该解决方案非常适合我,也适用于类似的任务。

我创建这个问答问题是因为我没有找到快速的解决方案,我花了一些时间才得到更好的版本。是this question的具体应用:

关于python - 如何使用 Pandas 从三列创建时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65395481/

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