python - Pandas 将空白值写入 CSV

标签 python pandas

我有一个如下所示的 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/

相关文章:

python - 使用 Django REST Framework 更新 USERNAME_FIELD 时如何处理 token

python - 为什么旧/新风格的 python 类在将切片传递给 __getitem__ 的方式上有所不同

Python pandas rolling_apply 两列输入到函数中

python - For 循环语句评估

python - Pandas 从列名称不同的行中选择数据

python - Ruby/Python 中的 POST 请求返回 'No Data'

python - 用 matplotlib 绘制 pandas period_range - 设置轴的频率

python - Pandas :创建一个在两列之间交替的新列

python - 如何计算多个csv文件中的行数

python - 如何将函数属性用作 python 对象以及字符串