python - 转换 pandas 数据框列的时间格式

标签 python pandas datetime dataframe scikit-learn

我有一个 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/

相关文章:

python - 在 python 中绘制二元 3D 矩阵

python - 生成缩进的多重索引

mysql - 根据条件显示下一个日期

python - lxml/ python : get previous-sibling

python - 由于 AttributeError,我无法使用 south 同步数据库

python - 根据另一个 Pandas 数据框的值填充一个 Pandas 数据框的最快方法是什么?

mysql - 按相邻时间值分组

python - 如何创建具有格式化日期的稀疏列

python - 使用 freeglut 为 Python 3.5.2 设置 PyOpenGL

python - 如何加快 Pandas 中每个 groupby 组的缺失值替换?