Pandas Python将int转换为float(Postgres数据库)

Pandas Python将int转换为float(Postgres数据库),pandas,sqlalchemy,Pandas,Sqlalchemy,避免此错误的最佳方法是什么 DataError:整数“669068424.0”上下文的输入语法无效: 复制序列_原始,第2行,列id:“669068424.0” 我使用pgadmin创建了一个表,该表指定了每列的数据类型。然后我用pandas读取数据并进行一些处理。我可以显式地提供一个列列表,并说它们是.astype(int),但这是必要的吗 我理解在整数后面有一个.0的原因是因为数据中有N,所以它们被转换成浮点数而不是整数。解决这个问题的最佳方法是什么?我在pandas 0.19的预发行版上看

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

DataError:整数“669068424.0”上下文的输入语法无效: 复制序列_原始,第2行,列id:“669068424.0”

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

我理解在整数后面有一个.0的原因是因为数据中有N,所以它们被转换成浮点数而不是整数。解决这个问题的最佳方法是什么?我在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)

您可以使用
to_csv
float_format
参数指定csv中的浮动格式:

df.to_csv('../raw/temp_sequence.csv', index=False, float_format="%d")

所以您有一个带有
float
列的表,但您想将其作为int列导出到csv?这就是你要问的吗?它们都是整数(秒数)。但是,有些行具有空值。Python或pandas使这些列成为浮点数,因为它不处理NaN整数。我需要用0填充na,以便将列识别为整数(这似乎是一种浪费,我每天得到大约200万行,而且很多行都有空格)。您的确切情况仍然不清楚。让我看看我是否理解正确。您手动创建了一个带有
int
列的表,但当您尝试将其导出到CSV时,不知何故会返回一个
float
列?是的,如果整数列中有一个空格,则该列将转换为float64。我正在努力寻找最有效的解决办法。我是否用0填充空格,然后显式转换为int?我是否将Postgres中的列改为数字?有更好的办法吗?我明白了;是CSV的往返造成了数据的混乱。您是否尝试过为指定
float\u format
参数以删除小数点?