我正在编写一个输出csv的脚本,需要以YYYYMMDD格式将执行时间作为文件名的一部分。 execution_timestamp是通过JDBC引出的,最后是我的DataFrame as int64。
import pandas as pd
from dateutil import parser
输入:
x = pd.DataFrame([1493293503289], columns=['EXECUTION_TIMESTAMP'])
ts= x['EXECUTION_TIMESTAMP']
ts
输出:
0 1493293503289
Name: EXECUTION_TIMESTAMP, dtype: int64
我编写了以下代码,我将其转换为pandas DataFrame - >时间戳 - >解析YYYYMMDD
输入:
df=pd.DataFrame(ts) # create pd data frame
ts_conv = pd.to_datetime(df['EXECUTION_TIMESTAMP'], unit='ns')[0]
parser.parse(str(ts_conv)).strftime('%Y%m%d')
输出:
'19700101'
但ts_conv
= Timestamp('1970-01-01 00:24:53.293503289')
我知道实际执行时间是'2017-04-27-11.45.03'
我非常感谢将此转换为适当日期的任何建议。
答案 0 :(得分:1)
根据@gseva设置unit='ms'
的建议,解析提供了正确的YYYYMMDD
字符串。单位是纳秒而不是毫秒。
输入:
ts_conv = pd.to_datetime(df['EXECUTION_TIMESTAMP'], unit='ms')[0]
parser.parse(str(ts_conv)).strftime('%Y%m%d')
输出:
'20170427'