gpt4 book ai didi

Python datetime - 具有 2 种日期格式的列是 (H :M:S) when time >1 hr, and (M:S) when time <1 hr - how to parse

转载 作者:行者123 更新时间:2023-11-28 18:57:12 24 4
gpt4 key购买 nike

我抓取了运行完成时间的数据集,其中包括在一小时内和一小时内完成的运行者。小时内的运行者编码为 M:S,例如48 分 12 秒完赛的选手为 48 分 12 秒。超过一小时的运行者编码为 H:M:S,例如1:12:45。

有没有办法将两种格式传递给 datetime 并将它们全部编码为 H:M:S?

我试过:

df['Time'] = pd.to_datetime(df['Time'],format="%H:%M:%S")

这(正确地)给不到一小时的运行者一个错误。

for obs in range(1,len(df)):
text = df.iloc[obs].loc['Time']
for fmt in ('%M:%S', '%H:%M:%S'):
try:
datetime.strptime(text, fmt)
except ValueError:
pass
raise ValueError('no valid date format found')

这给出了没有找到有效格式的错误值。

我希望解决方案可以用于不同的数据集,因此仅仅找到一个小时内的第一名参赛者并从那时起使用不同的格式并不真正有效。

最佳答案

试试这个:

df = pd.DataFrame({'Time': ['1:01:02', '3:20', 'xyz']})

tmp = (df.Time
.str.extract('(\d*):?(\d+):(\d+)$')
.replace('',0).astype(float)
)

这给了你

     0    1     2
0 1.0 1.0 2.0
1 0.0 3.0 20.0
2 NaN NaN NaN

你可以通过以下方式获得总秒数:

tmp[0] * 3600 + tmp[1] * 60 + tmp[2]

从中,您可以转换为timedelta类型。

关于Python datetime - 具有 2 种日期格式的列是 (H :M:S) when time >1 hr, and (M:S) when time <1 hr - how to parse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56905289/

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