数据框中的原始数据如下所示,我想将其转换为分钟数:
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:“浮动”对象不可下标
答案 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