【问题标题】:Pandas use and operator in LOC functionPandas 在 LOC 函数中的使用和运算符
【发布时间】:2017-06-01 03:48:41
【问题描述】:

我想在 loc 函数中有 2 个条件,但 &&and 运算符似乎不起作用。:

df:

business_id  ratings  review_text
xyz          2        'very bad'
xyz          1        'passable'
xyz          3        'okay'
abc          2        'so so'

我的代码: 我正在尝试将所有收视率为< 3 并拥有id = xyzreview_text 收集到一个列表中

 id = 'xyz'
mylist = df.loc[df['ratings'] < 3 and df[business_id] ==id,'review_text'].values.tolist()

我应该得到:

['very bad','passable']

此代码不起作用,我收到错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

如何在这里正确使用and 运算符?

【问题讨论】:

    标签: python pandas operator-keyword


    【解决方案1】:

    and 逻辑运算符需要&amp;,因为需要元素方面的and,请参阅boolean indexing

    id = 'xyz'
    mylist=df.loc[(df['ratings'] < 3) & (df['business_id'] == id),'review_text'].values.tolist()
    print (mylist)
    ['very bad', 'passable']
    

    【讨论】:

      【解决方案2】:

      使用query

      df.query('ratings < 3 & business_id == @id').review_text.tolist()
      
      ["'very bad'", "'passable'"]
      

      【讨论】:

        【解决方案3】:

        用~表示非逻辑运算

        例如:

        train.loc[(train['MiscVal'] == 0) & (~train['MiscFeature'].isna())]
        

        【讨论】:

          猜你喜欢
          • 2022-10-24
          • 2020-01-20
          • 2014-08-17
          • 2021-08-12
          • 2021-05-20
          • 1970-01-01
          • 2016-10-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多