开发者社区> 问答> 正文

Pandas 中“&”和“和”之间的区别

我有一些代码在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"

是否有某种代码推送会导致这种变化?由于我已经运行了几个月的代码,不知道什么会导致这个语句突然失败。

展开
收起
一码平川MACHEL 2019-01-23 11:20:19 3757 0
1 条回答
写回答
取消 提交回答
  • 在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。

    2019-07-17 23:26:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PyODPS架构以及DataFrame实现原理 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载