问题:在 Pandas 中将缺失值的整数导出到 csv

将 Pandas DataFrame 保存到 csv 时,一些整数会转换为浮点数。它发生在一列浮点数缺失值的情况下(np.nan)。

有没有简单的方法来避免它? (尤其是以自动方式 - 我经常处理各种数据类型的许多列。)

例如

import pandas as pd
import numpy as np
df = pd.DataFrame([[1,2],[3,np.nan],[5,6]],
                  columns=["a","b"],
                  index=["i_1","i_2","i_3"])
df.to_csv("file.csv")

产量

,a,b
i_1,1,2.0
i_2,3,
i_3,5,6.0

我想得到的是

,a,b
i_1,1,2
i_2,3,
i_3,5,6

编辑:我完全了解支持整数 NA - Pandas Caveats 和 Gotchas。问题是什么是一个很好的解决方法(特别是如果有许多其他类型的列并且我事先不知道哪些“整数”列有缺失值)。

解答

在 to_csv 函数中使用float_format = '%.12g'为我解决了类似的问题。它保留最多 12 位有效数字的合法浮点数的小数,但对于因 NaN 的存在而被迫浮点数的整数则丢弃它们:

In [4]: df
Out[4]: 
     a    b
i_1  1    2.0
i_2  3    NaN
i_3  5.9  6.0

In [5]: df.to_csv('file.csv', float_format = '%.12g')

输出是:

   , a,  b
i_1, 1,  2
i_2, 3, 
i_3, 5.9, 6
Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐