You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas导入CSV文件时如何保留+inf前的加号

原因说明

pandas 调用read_csv时默认会自动推断每列的数据类型,+inf、-inf会被识别为浮点数类型的正、负无穷特殊值。Python 及底层依赖的 numpy 对正无穷浮点数的标准字符串表示就是inf,默认省略正号,只有负无穷-inf会保留负号,因此读取后会出现+inf前置加号丢失的现象——本质是该列已经被转换为浮点类型,不存在作为字符串的前置+字符。

解决方案

根据后续使用场景的不同,可选择以下两种方案:

  • 若需要完整保留原始CSV的文本内容,直接指定对应列按字符串类型读取即可,这是最稳妥、对其他列影响最小的方案:
import pandas as pd
# 仅指定lower、upper两列为字符串类型,其余列保持默认自动类型推断
df = pd.read_csv('rules.csv', dtype={'lower': str, 'upper': str})

for i, r in df.iterrows():
    low = r['lower']
    high = r['upper']
    print(low, high)

运行后输出如下,可完整保留+inf格式:

-inf 2.1
2.1 +inf
  • 若后续需要基于上下界做数值比较、区间判断等计算,不建议读取时就保留字符串类型,否则会额外增加类型转换成本。更合理的方式是读取时保持默认浮点类型用于计算,仅在需要输出、展示规则时做格式化补全正号即可:
import pandas as pd
df = pd.read_csv('rules.csv')

def format_bound(val):
    if val == float('inf'):
        return '+inf'
    if val == float('-inf'):
        return '-inf'
    return str(val)

for i, r in df.iterrows():
    low = format_bound(r['lower'])
    high = format_bound(r['upper'])
    print(low, high)

不推荐通过全局关闭特殊值识别(如设置na_filter=False)的方式实现需求,该操作会同时影响空值、其他特殊浮点值的自动转换,容易引入非预期的类型问题。

内容的提问来源于stack exchange,提问作者Moataz Imad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:57:12