我正在尝试从数据库中获取数据,将它们放在数据框架中并将它们加载到AWS S3。
对于包含None值的字段,这些值将作为None加载到S3。我希望VARCHAR字段中的None为NULL或空白,INT字段中的None为0或空白。
connection = pyodbc.connect(conn)
sql = 'SELECT id, name from table_a'
df = pd.read_sql_query(sql, connection)
df=df.applymap(str)
csv_buffer = BytesIO()
s3 = boto3.resource('s3')
with gzip.GzipFile(mode='w', fileobj=csv_buffer) as zipped_file:
df.to_csv(TextIOWrapper(zipped_file, 'utf8'), index=False)
s3.Object(bucket[env],dest_filename).put(Body=csv_buffer.getvalue())
我在print(df)时得到的输出是-
<表类>ID 名称 tbody><<tr>1 没有 约翰 表类>
要在python中简单地将None的值更改为空值,可以尝试:
for col in df.columns:
df[col] = df[col].fillna(str())
int()也可以代替str(),或者空引号:"