我有一些代码在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"
是否有某种代码推送会导致这种变化?由于我已经运行了几个月的代码,不知道什么会导致这个语句突然失败。
在len(df_temp > 0)和len(df_temp4 > 0)可能不是你所期望的。具有pandas DataFrames的比较运算符返回逐元素结果,这意味着它们创建一个布尔数据框架,其中每个值指示DataFrame中的对应值是否大于零:
import pandas as pd
df = pd.DataFrame({'a': [-1,0,1], 'b': [-1,0,1]})
df
a b
0 -1 -1
1 0 0
2 1 1
df > 0
a b
0 False False
1 False False
2 True True
所以len的df是相同len的df > 0:
len(df)
3
len(df > 0)
3
“&”和“和”之间的区别
他们的意思不同:
&是按位的
and是合乎逻辑的(并且是短路的)
由于您具体询问了pandas(假设至少有一个操作数是NumPy数组,pandas系列或pandas DataFrame):
& 也指元素方式“按位和”。
pandas 的元素“逻辑和”不是,and但必须使用一个函数,即numpy.logical_and。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。