【发布时间】:2020-03-05 11:52:29
【问题描述】:
对于这个例子,我使用的是 pandas 的 1.0.1 版本。
我有一个混合类型和一些缺失值的 DataFrame:
df = pd.DataFrame(
[
[1, 2.0, '2020-01-01', 'A String']
], columns = ['int', 'float', 'datetime', 'str']
)
df.loc[1] = [pd.NA, pd.NA, pd.NA, pd.NA]
df.datetime = pd.to_datetime(df.datetime)
print(df)
int float datetime str 0 1 2.0 2020-01-01 A String 1 <NA> NaN NaT NaN
让我们打印 DataFrame 的类型以确保它们是我所期望的:
print(df.dtypes)
int object float float64 datetime datetime64[ns] str object dtype: object
现在,我想将此 DataFrame 写入 CSV 文件:
df.to_csv('test.csv', index=False)
查看输出 CSV,所有 NaN 值都被替换为空字符串。我想这对于字符串列来说很好,但对于 int、float 或 datetime 列来说并不是最佳选择。
如何获得缺失值的特定列表示?
编辑:确实可以使用na_rep 参数自动填充缺失值:df.to_csv('test.csv', na_rep='NA')。但是,它不允许特定于列的表示。
解决方案:我想目前最好的解决方案是在写入 CSV 之前使用 dict 调用 fillna:
df.fillna(
{'int': '<NA>', 'float': 'NaN', 'datetime': 'NaT'}
).to_csv('test.csv', index=False)
【问题讨论】: