pandas - 将时间对象更改为浮点数?

时间:2015-02-05 20:15:58

标签: pandas

我的原始数据中有一个字段用于调用长度,该字段被列为对象,例如:00:10:3​​0表示10分30秒。如何将其转换为10.50之类的数字?

我不断收到错误。如果使用pd.datetime转换字段,那么我就不能执行.astype('float')。在Excel中,我只是将时间戳加倍到1440,它输出我想要使用的数字值。 (时间戳* 24 * 60)

3 个答案:

答案 0 :(得分:7)

您可以使用time deltas更直接地执行此操作:

In [11]: s = pd.Series(["00:10:30"])

In [12]: s = pd.to_timedelta(s)

In [13]: s
Out[13]:
0   00:10:30
dtype: timedelta64[ns]

In [14]: s / pd.offsets.Minute(1)
Out[14]:
0    10.5
dtype: float64

答案 1 :(得分:1)

我会将字符串转换为日期时间,然后使用dt访问者访问时间组件并生成分钟列:

In [16]:

df = pd.DataFrame({'time':['00:10:30']})
df['time'] = pd.to_datetime(df['time'])
df['minutes'] = df['time'].dt.hour * 60 + df['time'].dt.minute + df['time'].dt.second/60
df
Out[16]:
                 time  minutes
0 2015-02-05 00:10:30     10.5

答案 2 :(得分:0)

可能有更好的方法,但这可行。

from datetime import datetime
import numpy as np

my_time = datetime.strptime('00:10:30','%H:%M:%S')
zero_time = datetime.strptime('00:00:00','%H:%M:%S')
x = my_time - zero_time
x.seconds

Out[25]: 630