将float64转换为Date

时间:2019-06-20 12:22:23

标签: python pandas

我正在使用pyodbc从SQL服务器中提取数据。问题是我需要从某个日期范围内提取数据;日期以错误的数据类型和格式出现。 Float64和90502(我想要的是2009年5月2日。)我对python很陌生,甚至远不能真正做到这一点,并且希望获得帮助。

我尝试转换为字符串,然后转换为strptime,但它告诉我数据格式错误。我也尝试了包含的代码,但是它似乎并没有按照我的意愿去做,因为数据仍然读取为float64,并且无法按需输出。

import pandas.io.sql as psql
from datetime import datetime
import xlwt
import numpy
date = datetime.strftime(datetime.now(), '%m.%d.%Y')


cnxn = pyodbc.connect(
    driver='{SQL Server}',
    Server='atlmktsql06',
    Database='Repository',
    trusted_connection='yes')
cursor = cnxn.cursor()
sql = ("""select * FROM dbo.tblAS400_Vcresrv WHERE VRRESV='CCVNQ'""")
df = psql.read_sql_query(sql, cnxn)
cnxn.close()
psql.to_datetime(psql.Series(['VRIN']).astype(str), infer_datetime_format=True, errors='coerce')
a = df.head(60)
print(a)
print(df.dtypes)
df.to_excel(r'C:\PythonCode\Testing.xls')

如上所述,最终结果是将数据转换为日期,并且也可以正确读取,因此我可以在python中使用sql语句按时间范围提取。目前,VRIN = Float64,读为90502,我想要VRIN =日期5/02/09。再次谢谢你!

1 个答案:

答案 0 :(得分:0)

请尝试以下操作:

d = str(int(float(90502)))
print("{0}/{1}/{2}".format(d[1:3],d[3:],str(d[:1]).zfill(2)))

输出:

05/02/09

您可以将其应用于数据框列,并以所需的格式获取输出。