【问题标题】:Change default decimal separator in pandas read_sql更改 pandas read_sql 中的默认小数点分隔符
【发布时间】:2021-04-30 18:12:47
【问题描述】:

我正在创建一个 python 脚本,它会根据 sybase 查询创建 csv 文件。

pandas 创建文件时,csv 文件中的所有数值都以“.0”结尾(例如,2.0 而不是 2)

我可以在查询中强制转换为整数,但这会影响查询性能。

为了解决这个问题,我在 read_sql 函数中将 coerce_float 参数设置为 false。

但是所有的列都转换成字符串,有些列必须是浮点数,小数点分隔符是“.”我需要“,”作为小数分隔符。

我的问题是: 有没有办法将默认小数点分隔符更改为逗号并将 coerce_float 保持为 False?

Obs:一个简单的字符串替换并不能解决我的问题,因为脚本会读取几个查询文件。

【问题讨论】:

    标签: python pandas dataframe sybase


    【解决方案1】:

    首先,python使用“.”写花车,所以你不能用“,”写花车。如果你想要用“,”写的浮点数,它们必须是字符串。但是,您可以在保存 .csv 时使用小数点“”保存浮点数,方法是将参数 decimal=',' 传递给 df.to_csv()

    【讨论】:

    • 它不起作用,因为 coerce_float 参数正在将整个数据帧转换为字符串,并继续用点保存
    • @RodrigoFerreira 这就是为什么你不应该使用 coerce_float,并且只有在保存时才修改浮点小数,否则你不能将浮点数用作浮点数,你必须将它们用作字符串,我不知道你的应用程序,但它似乎不方便呵呵
    • @RodrigoFerreira 也是,如果您仍想继续使用字符串,我不明白您为什么不想使用字符串替换。您可以在整个数据框或地图中使用 apply 来按列执行。
    • 它将运行多个查询,包括字符串字段,并且存在不当替换的风险
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    相关资源
    最近更新 更多