我正在尝试将ISO8601持续时间数据的pandas dataframe列转换为总秒数。持续时间值看起来像PT7M7S
,这意味着7分7秒。如果使用isodate.parse_duration("PT7M7S")
之类的东西,isodate0.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
理想的输出是使duration
列包含与该行相对应的总秒数。例如,第一行不是PT7M7S
,而是427
。在
谢谢你的帮助。谢谢。在
为什么不在序列
df['duration']
上使用apply
函数,这样会快得多。在这是一个代码示例。在
注意,这里有一个诀窍:将
datetime
或timedelta
对象除以np.timedelta64
不同的单位,你就可以得到这个对象的单位数。在顺便说一下,如果有
NaN
或缺少值,则需要处理它们。在另外一点,对于来自}时,它才是合适的。因为^{} 可以是
unutbu
的回答,只有当您的数据只包含'M'
和{PnnYnnMnnDTnnHnnMnnS
。在希望这对你有用。在
以下是另一种解决方案:
数据:
^{pr2}$说明:
可以使用^{} 解析字符串:
收益率
^{pr2}$相关问题 更多 >
编程相关推荐