大熊猫在LOC功能中使用和操作

jxn*_*jxn 7 python operator-keyword pandas

我希望在loc函数中有2个条件但是&&或者and运算符似乎不起作用:

DF:

business_id  ratings  review_text
xyz          2        'very bad'
xyz          1        'passable'
xyz          3        'okay'
abc          2        'so so'
Run Code Online (Sandbox Code Playgroud)

mycode的:我试图收集所有review_text它的收视率< 3,并有id = xyz到一个列表

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

我应该得到:

['very bad','passable']
Run Code Online (Sandbox Code Playgroud)

这段代码不起作用,我得到错误:

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

我如何and在这里正确使用操作员?

jez*_*ael 7

你需要&and逻辑运算符,因为需要逐元素and,见布尔索引:

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