我有一个如下所示的 DataFrame:
import pandas as pd
import numpy as np
df = pd.DataFrame(data={'data': [4, np.nan]})
df
data
0 4.0
1 NaN
此 DataFrame 是在解析来自各种来源的数据后生成的,有时我没有某些整数字段的值。
最终这些数据将存储在 CSV 中,我想将其存储为整数 4 和空白。我尝试过使用 replace({numpy.nan: None})
和 replace({numpy.nan: ''})
但这没有帮助。
当导出到 CSV 时,如何确保获得整数 4 和空白?最终目标是使用此 CSV 将其加载到已明确定义数据类型的 Redshift/Postgres 中。
更新: 我如何编写这个文件?
with s3fs.open(s3_path, 'wb') as f:
s = StringIO()
df.to_csv(s, index=False, header=True)
f.write(s.getvalue().encode('utf-8'))
s = None
最佳答案
您可以将dtype
指定为int
:
df = pd.DataFrame(data={'data': [4, np.nan]}, dtype=int)
df.to_csv('output.csv', index=False)
输出.csv
data
4
""
编辑
如果您需要在已创建的数据帧上指定数据类型,可以使用 .astype
在数据框上。
如果您的数据帧包含 NaN 值,您应该转换为 object
类型:
df['data'] = df['data'].astype(object)
关于python - Pandas 将空白值写入 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53962485/