将hh:mm:ss转换为分钟返回值,但返回TypeError:'float'对象不可下标

时间:2019-01-28 17:51:43

标签: pandas

数据框中的原始数据如下所示,我想将其转换为分钟数:

0         03:30:00
1              NaN
2         00:25:00

我从这篇文章中学到了一个很好的方法: Convert hh:mm:ss to minutes using python pandas

df2['FS_Runtime'].str.split(':')运行此代码会将数据分成以下

0         [03, 30, 00]
1              NaN
2         [00, 25, 00]

然后我像帖子中的示例一样添加了.apply。

df2['FS_Runtime'].str.split(':').apply(lambda x: int(x[0])*60)

但是我遇到了以下错误:

  

TypeError:“浮动”对象不可下标

2 个答案:

答案 0 :(得分:2)

问题是由于数据帧中存在NaN。你可以试试这个

df1['FS_Runtime'] = pd.to_datetime(df1['FS_Runtime'], format = '%H:%M:%S')
df1['FS_Runtime'].dt.hour * 60 + df1['FS_Runtime'].dt.minute

0    210.0
1      NaN
2     25.0

答案 1 :(得分:1)

您的格式是pd.to_timedelta的正确格式,然后获得秒数并除以60:

import pandas as pd
import numpy as np

pd.to_timedelta(df['FS_Runtime']).dt.total_seconds()/60
# Alternatively
pd.to_timedelta(df['FS_Runtime'])/np.timedelta64(1, 'm')

#0    210.0
#1      NaN
#2     25.0
#Name: FS_Runtime, dtype: float64