Pandas将SQL读取为CSV - Int转换

时间:2015-11-05 16:01:56

标签: python csv pandas

我有一个本地Postgres数据库的数据,我需要上传到S3然后复制到Redshift。

为实现这一目标,我使用Python Pandas如下:

engine = create_engine(self.engine)
connection = engine.raw_connection()
df = pd.read_sql(<sql string>, connection, coerce_float=False)
df.to_csv(<output fn>, header=True, index=False, encoding='utf-8')

它执行的sql返回varchar(255), varchar(255), int, int行。但是,由于其中一些值可能为null,因此我会遇到Pandas Caveat about integers and NaN values

This post通过将na设置为任意int并将astype显式设置为int来解决它们的问题。他们能够这样做,因为他们的所有列都具有相同的数据类型。但是,我混合了varchar(255)和int。

如何强制df.to_csv(...)输出我的整数作为整数(而不是浮点数)?

谢谢,

1 个答案:

答案 0 :(得分:0)

为什么不能在df.to_csv()上面插入这两行?

df = df.fillna(<some_int>)
df[[int_col1, int_col2]] = df[[int_col1, int_col2]].astype('int64')