【问题标题】:unknown timedelta / datetime format未知时间增量/日期时间格式
【发布时间】:2020-01-09 12:30:50
【问题描述】:

我正在使用旧数据库(SQL-Server 2008),我提取了一些数据如下:

我完全不知道 StartTime 和 EndTime 格式是什么?我很确定我在谷歌上搜索错误的东西,但我也不确定要谷歌什么!

我尝试使用标准 pd_to_datetimepd_to_timedelta 转换为 timedelta 或 pandas 日期时间对象,但这不是我能理解的任何东西。

第三行给我1970-01-01 00:00:00.000000540

import pandas as pd
df = pd.read_clipboard(sep='\s+')
print(df)

StartDate   StartTime   EndTime Duration
0   18/11/2006  NaN NaN 0
1   23/12/2006  NaN NaN 0
2   23/12/2006  540.0   1080.0  540
3   23/12/2006  540.0   1020.0  480
4   23/12/2006  540.0   1020.0  480
5   30/12/2006  630.0   1080.0  450
6   30/12/2006  540.0   1020.0  480
7   30/12/2006  540.0   1020.0  480
8   30/12/2006  540.0   1020.0  480
9   30/12/2006  540.0   1020.0  480
10  06/01/2007  1020.0  1200.0  180
11  06/01/2007  540.0   1020.0  480
12  06/01/2007  540.0   1020.0  480
13  06/01/2007  1020.0  1200.0  180
14  06/01/2007  1020.0  1200.0  180
15  18/11/2006  540.0   780.0   240
16  18/11/2006  900.0   960.0   60
17  23/12/2006  NaN NaN 0
18  23/12/2006  540.0   1080.0  540
19  23/12/2006  540.0   1020.0  480
20  23/12/2006  540.0   1020.0  480
21  23/12/2006  540.0   1020.0  480
22  09/09/2006  540.0   1050.0  510
23  09/09/2006  540.0   1050.0  510
24  09/09/2006  540.0   1020.0  480

有人可以帮忙吗?

【问题讨论】:

  • StartTime 和 EndTime 是否可以是自 StartDate 午夜以来的分钟数?
  • @Isaac 刚刚想通了,它们是秒,将unit=s 传递到to_datetime 进行排序。
  • datetime 没有格式,它是一个二进制值。要从任何数据库读取数据,请使用read_sql,而不是read_clipboard。您发布的内容看起来像是以错误的布局显示的日期和小数。 read_sql 不会有任何问题,它会返回不同列中的值
  • @PanagiotisKanavos 当然,我写这个是为了帮助任何想要复制数据的人,我正在读取一个包含 4400 万行的庞大表,我认为复制和粘贴无法处理那。我上面发的是read_sql

标签: python sql-server datetime


【解决方案1】:

在发布问题之前应该忍受更长的时间,

对于可能有同样问题的迷路的人 - 数字是以秒为单位的时间,将单位参数传递给与 dt.strftime() 链接的 to_datetime 函数给了我数据,这似乎是正确的:

由于我不确定幕后发生了什么,因此我很高兴接受任何可以对幕后执行的操作进行简单解释的人的回答。

df['StartTime'] = pd.to_datetime(df['StartTime'],unit='s').dt.strftime('%H:%M:%S')
df['EndTime']= pd.to_datetime(df['EndTime'],unit='s').dt.strftime('%H:%M:%S')
df['Duration'] = pd.to_datetime(df['Duration'],unit='s').dt.strftime('%H:%M:%S')

print(df)

StartDate   StartTime   EndTime Duration
0   18/11/2006  NaT NaT 00:00:00
1   23/12/2006  NaT NaT 00:00:00
2   23/12/2006  00:09:00    00:18:00    00:09:00
3   23/12/2006  00:09:00    00:17:00    00:08:00
4   23/12/2006  00:09:00    00:17:00    00:08:00
5   30/12/2006  00:10:30    00:18:00    00:07:30
6   30/12/2006  00:09:00    00:17:00    00:08:00
7   30/12/2006  00:09:00    00:17:00    00:08:00
8   30/12/2006  00:09:00    00:17:00    00:08:00
9   30/12/2006  00:09:00    00:17:00    00:08:00
10  06/01/2007  00:17:00    00:20:00    00:03:00
11  06/01/2007  00:09:00    00:17:00    00:08:00
12  06/01/2007  00:09:00    00:17:00    00:08:00
13  06/01/2007  00:17:00    00:20:00    00:03:00
14  06/01/2007  00:17:00    00:20:00    00:03:00
15  18/11/2006  00:09:00    00:13:00    00:04:00
16  18/11/2006  00:15:00    00:16:00    00:01:00
17  23/12/2006  NaT NaT 00:00:00
18  23/12/2006  00:09:00    00:18:00    00:09:00
19  23/12/2006  00:09:00    00:17:00    00:08:00
20  23/12/2006  00:09:00    00:17:00    00:08:00
21  23/12/2006  00:09:00    00:17:00    00:08:00
22  09/09/2006  00:09:00    00:17:30    00:08:30
23  09/09/2006  00:09:00    00:17:30    00:08:30
24  09/09/2006  00:09:00    00:17:00    00:08:00

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多