psycopg2插入postgres - 基于excel的数据格式化为数字

时间:2017-01-04 16:36:10

标签: python excel postgresql datetime sqlalchemy

我将Excel文件读入pandas,然后尝试将值插入postgres db。 我使用以下代码将数据转换为python日期:

date_val = 42565.0
year, month, day, hour, minute, sec = xlrd.xldate_as_tuple(date_val, 0)
py_date = "%02d.%02d.%04d" % (day, month, year)

我还没有能够找到一个解决方案,用于将日期列中的空值传递给postgres使用(psycopg2),python 2.7.12。列中的某些值为空,pd.read_excel将这些值解析为NaN。我尝试将数据插入postres db时遇到的错误是:

<class 'sqlalchemy.exc.ProgrammingError'>, ProgrammingError('(psycopg2.ProgrammingError) column "created_at" is of type date but expression is of type double precision\nLINE 1: ...at, 0.0, \'NaN\'::float, 9410, 921, 111, \'NaN\'::flo...\n  

我试图用空字符串填充那些单元格,零作为整数或字符串,但我每次都收到错误。

df['created_at'].fillna()

我应该如何解析这些值?

谢谢。

1 个答案:

答案 0 :(得分:0)

Excel将日期存储为数值。您需要将它们转换为日期时间值,请参阅How do I read a date in Excel format in Python?以获得良好的讨论和解决方案。