我有一个大熊猫时间表,其中包含此时间格式的列:例如df = pd.read_sql("SELECT .....'" \
, con=mariadb_connection)
(小时,分钟,秒)。这些值是通过带有以下查询函数的pandas从我的SQL数据库中提取的
14:30:00
我想将这些时间值转换为分钟(或秒),因为我希望对作为我的持续时间变量的值执行线性回归。我怎么能这样做呢?有没有办法可以转换这些值(例如,将:
乘以60到14并添加到30,将总持续时间(以分钟为单位,即870)转换为不带 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
的持续时间值,然后放置它们回到数据帧的相同行和列进行进一步分析?目前,我无法使用当前时间格式,因为scikit线性回归函数不接受此格式作为函数的参数之一。
示例数据框:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>userInformation</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Jersey RESTful Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.newgen.ap2</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>com.newgen.ap2.CrossOrigin</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Jersey RESTful Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
答案 0 :(得分:2)
演示:
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)