Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql IBM DB2转换为VARCHAR与Python Pandas to_datetime函数_Sql_Python 3.x_Pandas_Parsing_Db2 - Fatal编程技术网

Sql IBM DB2转换为VARCHAR与Python Pandas to_datetime函数

Sql IBM DB2转换为VARCHAR与Python Pandas to_datetime函数,sql,python-3.x,pandas,parsing,db2,Sql,Python 3.x,Pandas,Parsing,Db2,我有电话 CAST(SURGERY.DTM AS VARCHAR(30)) AS appt_dt 在命中IBM DB2数据库的SQL文件中。由于各种原因,我必须转换为VARCHAR,因此不必选择CAST。问题是,这个演员选择了一个非常糟糕的格式。结果如下:2020-06-09-13.15.00.000000。我们有四位数的年份,包括世纪、月份和月份的日期。到目前为止,一切顺利。但是还有一个非常糟糕的十进制,它以24小时、分钟、秒和微秒分隔。我的目标是将这些日期快速读入Python中的panda

我有电话

CAST(SURGERY.DTM AS VARCHAR(30)) AS appt_dt
在命中IBM DB2数据库的SQL文件中。由于各种原因,我必须转换为
VARCHAR
,因此不必选择
CAST
。问题是,这个演员选择了一个非常糟糕的格式。结果如下:
2020-06-09-13.15.00.000000
。我们有四位数的年份,包括世纪、月份和月份的日期。到目前为止,一切顺利。但是还有一个非常糟糕的十进制,它以24小时、分钟、秒和微秒分隔。我的目标是将这些日期快速读入Python中的pandas数据帧,我无法让pandas解析这种日期,大概是因为它抓取了
13.15
一小时,
00.000000
一分钟,然后几秒钟就什么都没有了。它出错了。我对解析器的尝试如下所示:

parser_ibm_db(date_str: str) -> pd.tslib.Timestamp:
    return pd.to_datetime(date_str, format='$Y-%m-%d-%H.%M.%S')
但它不起作用。选项
也不能推断出日期时间格式
,或者根本没有

所以我的问题是:有没有一种方法可以控制
CAST的格式设置
功能更好,还是有办法读取 结果变成熊猫了吗?我对这两种方法都非常满意

我对第二种方法的一个想法是,以某种方式限制
%H
%M
选项只查看2个字符,但我不知道如何执行,文档也没有告诉我如何执行

蛮力方法是读取中的csv数据,搜索这些类型的字符串,并用冒号替换前两个句点。日期分析器对此不会有问题。但这将涉及一个额外的处理步骤,我宁愿避免


谢谢你的时间

更改格式字符串:

dt_string = '2020-06-09-13.15.00.000000'
pd.to_datetime(dt_string, format='%Y-%m-%d-%H.%M.%S.%f')
正确转换字符串:

Timestamp('2020-06-09 13:15:00')

更改格式字符串:

dt_string = '2020-06-09-13.15.00.000000'
pd.to_datetime(dt_string, format='%Y-%m-%d-%H.%M.%S.%f')
正确转换字符串:

Timestamp('2020-06-09 13:15:00')

也许你需要在strftime中使用
%f
?也许你需要在strftime中使用
%f
?你是对的!我想我已经试过了,但没有成功,但我一定做了一些与此不同的事情。非常感谢!你说得对!我想我已经试过了,但没有成功,但我一定做了一些与此不同的事情。非常感谢!