Python将内部转换为浮点数(Postgres数据库)

时间:2016-09-13 14:27:30

标签: pandas sqlalchemy

避免此错误的最佳方法是什么?

  

DataError:整数的输入语法无效:" 669068424.0"背景:   COPY sequence_raw,第2行,列ID:" 669068424.0"

我使用pgadmin创建了一个表,它指定了每列的数据类型。然后我用pandas读取数据并进行一些处理。我可以明确地提供一个列列表,并说它们是.astype(int),但这是必要的吗?

我理解整数之后存在.0的原因是因为数据中有NaN,所以它们变成浮点数而不是整数。解决这个问题的最佳方法是什么?我在预发布的pandas 0.19上看到有更好的处理稀疏数据,是否有机会覆盖?

def process_file(conn, table_name, file_object):
    fake_conn = pg_engine.raw_connection()
    fake_cur = fake_conn.cursor()
    fake_cur.copy_expert(sql=to_sql % table_name, file=file_object)
    fake_conn.commit()
    fake_cur.close()


df = pd.read_sql_query(sql=query.format(**params), con=engine)
df.to_csv('../raw/temp_sequence.csv', index=False)
df = open('../raw/temp_sequence.csv')
process_file(conn=pg_engine, table_name='sequence_raw', file_object=df)

1 个答案:

答案 0 :(得分:1)

您可以使用float_format的{​​{1}}参数指定CSV中浮动的格式:

to_csv