python - 从日期时间中选择时间

标签 python pandas sqlalchemy

我们在自己的云上有一个Python程序,我们想要从MySQL数据库中获取数据,并用它来进行分析。到目前为止,我们想要从日期时间中选择时间。

示例:'02/11-2019 18:20:00' --> SELECT '18:20:00'

我们尝试使用以下代码行来实现此目的:

test = pd.read_sql('SELECT CAST(time_end AS time(0)) FROM Raw_Validated WHERE third_temp_lpn = "%s"' % (list_lpn_temp[-1]), conn).astype(str).values
times.extend(test)
print (times)

由于某种原因,打印时还添加了“0 天”,因此我们的打印看起来像:

enter image description here

文本

2019-07-26 19:00:00  |  2019-07-26 19:20:00
[array(['0 days 19:20:00.000000000'], dtype=object)]
2019-07-27 03:00:00  |  2019-07-27 03:20:00
[array(['0 days 19:20:00.000000000'], dtype=object), array(['0 days 12:40:00.000000000'], dtype=object), array(['0 days 17:00:00.000000000'], dtype=object), array(['0 days 11:20:00.000000000'], dtype=object)]
2019-07-27 22:20:00  |  2019-07-27 22:40:00
[array(['0 days 19:20:00.000000000'], dtype=object), array(['0 days 12:40:00.000000000'], dtype=object), array(['0 days 17:00:00.000000000'], dtype=object), array(['0 days 11:20:00.000000000'], dtype=object)]

为什么会发生这种情况,我们可以采取什么措施来避免这种情况?

最佳答案

您应该将转换/剪切移动到应用程序的 python 部分,我认为这比在数据库上进行转换更容易:

import datetime

sql_time = "2019-11-12 18:20:00"
time_end = datetime.datetime.strptime(sql_time, '%Y-%m-%d %H:%M:%S')
print(time_end.strftime('%H:%M:%S'))

当您使用 pandas 时,您不应该强制转换日期时间对象,因为 pandas 本身可以执行此操作:

Series.dt.time - 返回 datetime.time 的 numpy 数组 ( https://pandas.pydata.org/pandas-docs/stable/reference/series.html )

关于python - 从日期时间中选择时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59372565/

相关文章:

python - 有没有办法以编程方式生成 Python 字节码?

python - 如何使用 pymongo 将精确匹配词传递给 mongodb 查询?

python - 如何使用 xpath 从父级 html 中检索嵌套和非嵌套子级?

python - 如何为 pandas 的列中的唯一值创建行?

mysql - SQLAlchemy 可以独立于框架单独使用吗?是否推荐这样做?

python - 如何使用 SQLalchemy 执行 "starts with"查询?

python - 为什么继承另一个类的类不会产生与 'another class' 相同的结果?

python - 通过替换不同列中的 nan 来合并数据框中的行

python - 根据条件计算某个值在 pandas 数据框中出现的次数

python - SQLAlchemy group_by SQLite 与 PostgreSQL