我有一个 pandas 时间范围,其中有一列采用这种时间格式:例如05:00:00
(小时、分钟、秒)。这些值是通过 pandas 使用以下查询函数从我的 SQL 数据库中提取的
df = pd.read_sql("SELECT .....'" \
, con=mariadb_connection)
我想将这些时间值转换为分钟(或秒),因为我想对我的持续时间变量的值执行线性回归。我该如何去做呢?有没有办法可以将这些值(例如,将 14:30:00
的 60 乘以 14,然后添加到 30,以获得以分钟为单位的总持续时间,即 870)转换为持续时间值,而无需 :
然后将它们放回数据帧的相同行和列中以进行进一步分析?目前,我无法使用当前时间格式,因为 scikit 线性回归函数不接受此格式作为函数的参数之一。
示例数据框:
voltage valueA Duration valueB
0 12.45 0.86 14:04:30 9.157145
1 12.52 0.61 14:02:32 10.010095
2 12.24 0.17 14:00:33 10.010095
最佳答案
演示:
In [143]: df
Out[143]:
time
0 14:30:00
1 16:27:29
In [144]: df.dtypes
Out[144]:
time object
dtype: object
In [145]: df['seconds'] = pd.to_timedelta(df['time']).dt.seconds
In [146]: df
Out[146]:
time seconds
0 14:30:00 52200
1 16:27:29 59249
In [147]: df.dtypes
Out[147]:
time object
seconds int64
dtype: object
更新: @JonClements has proposed another interesting idea将时间(如果 Duration
列在 MariaDB 端具有 time
数据类型)转换为秒在 SQL 端:
df = pd.read_sql("select voltage, valuea, valueb, time_to_sec(duration) as duration from some_table" ,
con=mariadb_connection)
关于python - 转换 pandas 数据框列的时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48599923/