【问题标题】:Python function error : '<' not supported between types 'str' and 'int'Python函数错误:'<'类型'str'和'int'之间不支持
【发布时间】:2019-05-09 05:23:44
【问题描述】:

我正在研究重复分类项目。我正在计算重复邮件和新邮件之间的时间间隔(以天为单位)。我想在这段时间间隔上应用一个函数,说明它是新邮件还是重复邮件。

功能:

days = df['days_difference']
if(days<30):
   return 'repeat'
else:
   return 'fresh'

我收到错误:'str' 和 'int' 的实例之间不支持

“days_difference”列包含整数值和无值。

寻找解决方案!

【问题讨论】:

  • 错误告诉您问题:df['days_difference'] 的类型为 str
  • 另外,这真的是一个数据框吗?我期待一个不同的错误:它实际上是一本字典吗?如果它只是一个普通的python字典,那么你应该避免使用df这个名字,因为它会引起很多混乱。
  • 使用print(type(df['days_difference'])) 看看它是否真的是一个整数(提示:不是)。

标签: python function operators


【解决方案1】:

这基本上意味着您的“天”变量是一个字符串。您不能使用“

...
if(int(days)<30):
...

【讨论】:

    【解决方案2】:

    您应该考虑的一个建议是,始终使用您从 python 获得的确切错误执行搜索,并且通常您会在 0.1 毫秒内得到响应。

    在您的情况下,您将一个整数值(比如说 2)与一个字符串值(恰好是 '2')进行比较,python 不理解。

    您可以比较 `int(days)' 和 30 之类的:

    if(int(day) < 30):
        return 'repeat'
    else: 
        return 'fresh'
    

    【讨论】:

      【解决方案3】:

      错误不言自明:

      Python 函数错误:'

      这是由strint 类型的比较引起的,这在 Python 3 中是无效的(尽管在 Python 2 中没问题)。

      例子:

      result = '20' > 10  # In Python 3, this is illegal and will raise an exception
      

      在您的情况下,错误很可能是由测试if(days&lt;30): 引起的。您的数据框可能包含 str 值。在尝试与另一个值进行比较之前,您可能需要将它们转换为 int

      days = int(df['days_difference'])
      if(days<30):
         return 'repeat'
      else:
         return 'fresh'
      

      【讨论】:

      • 虽然即将结束,但在 Python 2 中这样的比较是可能的
      • 感谢@roganjosh,我不知道这种比较在 2.x 中是否有效。我相应地更新了答案
      • 有效,但毫无意义,因此将其删除:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-12
      • 1970-01-01
      • 2021-09-28
      • 2014-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多