【问题标题】:TypeError between two floats两个浮点数之间的 TypeError
【发布时间】:2019-10-02 11:34:47
【问题描述】:

所以我正在尝试使用 Openpyxl 为我的 excel 文件设置条件列颜色。这是我的代码:

for cols in ws2.iter_cols(min_col=10, max_col=10, min_row=67, max_row=83):
    for cell in cols:
        if (cell.value > 0.35):
            cell.fill = PatternFill(fgColor="FFC000", patternType = 'solid')

但我只是得到一个错误:

TypeError: '>' 在 'str' 和 'float' 的实例之间不支持

我检查了cell.value0.35 的类型——两者都是float。我能做什么?

【问题讨论】:

  • 您的数据可能具有Null 值,如您的cell.value
  • 您是否非常确定 TypeError 指的是您在问题中提出的行?你说你已经检查了类型,它们都是浮动的。但是解释器也检查了它们,并说其中一个是字符串。而且,对于它所抱怨的那一行,解释器总是正确的
  • @BoarGules 我选择了这个特定的代码部分并执行它并得到相同的错误消息......
  • 异常告诉你到底是什么问题。
  • 我仍然说解释器对类型是正确的,你错了。在进行比较之前在循环中进行类型检查并打印结果。

标签: python excel pandas openpyxl


【解决方案1】:

试试这个:

try:
    if (float(cell.value) > 0.35):
        ...
except:
    continue

【讨论】:

    【解决方案2】:

    您可以使用以下内容:

    cell_value = cell.value
    if isinstance(cell_value, (int, float)) and (cell.value > 0.35):
        cell.fill = PatternFill(fgColor="FFC000", patternType = 'solid')
    

    【讨论】:

      【解决方案3】:

      我认为问题在于您正在迭代的列并非由所有浮点数组成!检查每个元素的类型。

      【讨论】:

        猜你喜欢
        • 2011-07-14
        • 2015-12-23
        • 1970-01-01
        • 1970-01-01
        • 2013-04-04
        • 1970-01-01
        • 2011-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多