我有一些代码在cron上运行了几个月(通过kubernetes)
昨天,我的部分代码无法正常工作:
这句话突然变得不“正确”(df_temp和df_temp4中都有数据:
if ( len(df_temp > 0) & len(df_temp4 > 0)):
print "HERE"
然而,这是有效的:
if ( len(df_temp > 0) and len(df_temp4 > 0)):
print "HERE"
是否有某种代码推送会导致这种变化?因为我已经运行了几个月的代码,不确定是什么会导致这个语句突然失败
Tags:
从逻辑上讲,这两种说法是不同的。 政府;表示按位运算符。 AND表示逻辑AND
他们有完全不同的行为
当您使用
and
时,您是在比较布尔值,但当您使用&
时,您是在使用逻辑and元素。我建议您阅读此完整答案以了解更多信息。Logic operator for boolean indexing in Pandas
len(df_temp > 0)
和len(df_temp4 > 0)
可能没有达到您期望的效果。带有DataFrames的比较运算符返回按元素的结果,这意味着它们创建一个布尔数据帧,其中每个值指示DataFrames中的对应值是否大于零:因此{}的{}与{}的{}相同:
它们的含义不同:
&
是bitwise andand
是{a2}(和短路)由于您特别询问了熊猫(假设至少有一个操作数是NumPy数组、熊猫系列或熊猫数据帧):
&
也指按元素的“按位and”李>and
,而是必须使用函数,即^{有关更多说明,请参阅"Difference between 'and' (boolean) vs. '&' (bitwise) in python. Why difference in behavior with lists vs numpy arrays?"
您没有提供“失败”或预期的行为,因此很遗憾,我无法在这方面帮助您
相关问题 更多 >
编程相关推荐