pandas - 将时间对象更改为浮点数?
pandas - change time object to a float?
我的原始数据中有一个通话长度字段,它被列为一个对象,例如:00:10:30 表示 10 分 30 秒。我怎样才能把它转换成像 10.50 这样的数字?
我总是收到错误。如果使用 pd.datetime 转换字段,那么我不能执行 .astype('float')。在 Excel 中,我只是将时间戳乘以 1440,它输出我想要使用的数字值。 (时间戳 * 24 * 60)
可能有更好的方法,但这行得通。
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
我会将字符串转换为日期时间,然后使用 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
您可以使用 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
我的原始数据中有一个通话长度字段,它被列为一个对象,例如:00:10:30 表示 10 分 30 秒。我怎样才能把它转换成像 10.50 这样的数字?
我总是收到错误。如果使用 pd.datetime 转换字段,那么我不能执行 .astype('float')。在 Excel 中,我只是将时间戳乘以 1440,它输出我想要使用的数字值。 (时间戳 * 24 * 60)
可能有更好的方法,但这行得通。
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
我会将字符串转换为日期时间,然后使用 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
您可以使用 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