我有一个本地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(...)
输出我的整数作为整数(而不是浮点数)?
谢谢,
答案 0 :(得分:0)
为什么不能在df.to_csv()
上面插入这两行?
df = df.fillna(<some_int>)
df[[int_col1, int_col2]] = df[[int_col1, int_col2]].astype('int64')