gpt4 book ai didi

python - 将 ISO 8601 数据的 Pandas 列转换为秒

转载 作者:行者123 更新时间:2023-11-28 22:32:58 25 4
gpt4 key购买 nike

我正在尝试将 ISO 8601 持续时间数据的 pandas 数据帧列转换为总秒数。持续时间值类似于 PT7M7S,表示 7 分 7 秒。如果我使用类似 isodate.parse_duration("PT7M7S") 的东西,isodate 0.5.4 可以有效地解析一个字符串。但是,我需要在 pandas 列上运行相同的命令,但不知道如何操作。我尝试了 isodate.parse_duration(df2['duration']) 但它返回了一个 TypeError: Expecting a string

以下代码创建了一个测试数据框:

df = ["PT7M7S", "PT7M14S", "PT6M45S"]
df = pd.DataFrame.from_dict(df)
names = df.columns.tolist()
names[names.index(0)] = 'duration'
df.columns = names

这是我试过但无效的代码:

import isodate
dur = isodate.parse_duration(df['duration'])
df['duration'] = dur.total_seconds()

理想的输出是让 duration 列包含对应于该行的总秒数。因此,例如,第一行不是 PT7M7S,而是 427

我很感激任何帮助。谢谢。

最佳答案

你可以使用 str.extract解析字符串:

import numpy as np
import pandas as pd

df = pd.DataFrame({'duration': ["PT7M7S", "PT7M14S", "PT6M45S"]})
df[['minutes','seconds']] = df['duration'].str.extract(r'PT(\d+)M(\d+)S', expand=True).astype('int')
df['total_seconds'] = 60*df['minutes'] + df['seconds']

产量

  duration  minutes  seconds  total_seconds
0 PT7M7S 7 7 427
1 PT7M14S 7 14 434
2 PT6M45S 6 45 405

关于python - 将 ISO 8601 数据的 Pandas 列转换为秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40432287/

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