对于大型数据集,我想在编写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,但这会使每个浮点数看起来都相同,这在写入整数时不会节省空间。
答案 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
如果速度太慢,您也可以跳过类型检查,只需将字符串转换应用于与数字类型匹配的列。