最小化Pandas中的浮点格式df.to_csv()

时间:2015-07-29 15:53:43

标签: python-3.x pandas

对于大型数据集,我想在编写CSV时对浮动进行最低限度的编码。

0.0 or 1.0 should be written 0 or 1
1.234567 should be written 1.235
123.0 should be written 123

DataFrame.to_csv()允许使用float_format,但这会使每个浮点数看起来都相同,这在写入整数时不会节省空间。

1 个答案:

答案 0 :(得分:0)

你可以像这样做一些hacky:

def to_str(item):
    if type(item) in {np.int, np.float64}:
        return '{:g}'.format(item)
    else:
        return item

pd.DataFrame({'int': [1, 2], 'float': [1.03, 1.0], 'str': ['a', 'b']}).applymap(to_str)

返回

  float  int str
0  1.03    1   a
1     1    2   b

如果速度太慢,您也可以跳过类型检查,只需将字符串转换应用于与数字类型匹配的列。