Python 使用多个loc()

Python 使用多个loc(),python,pandas,dataframe,Python,Pandas,Dataframe,我试图在下表中使用multiple loc(),但不幸的是,代码给了我一个错误,说明: ValueError:数据帧的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 我的df如下所示: REFERENCE PERIOD QTY PRICE abc123 Jan-20 20 21.2 abc123 Feb-20 -40 22.3 abc123

我试图在下表中使用multiple loc(),但不幸的是,代码给了我一个错误,说明:

ValueError:数据帧的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。

我的df如下所示:

REFERENCE     PERIOD      QTY      PRICE
abc123        Jan-20       20       21.2
abc123        Feb-20      -40       22.3
abc123        Mar-20       20       22.9
cde456        Aug-20      -10       18.7
cde456        Sep-20       20       19.4
cde456        Jan-20      -10       19.93
给出错误的代码理想情况下应该返回表的一个子集:

dfa = df.loc[df['PERIOD'].str.contains(pat='JAN')] and df.loc[df['REFERENCE'].str.contains(pat='abc')]
知道我在同一个字符串中使用2.loc函数有什么不对吗


Thx

尝试使用布尔运算符的single
loc

df.loc[df['PERIOD'].str.contains('JAN') & 
       df['REFERENCE'].str.contains('A')]

您可以通过使用
分隔两个条件来给出它们。因此,您不需要使用两个
.loc

带有
.loc

df.loc[(df['PERIOD'].str.contains('Jan')) & (df['REFERENCE'].str.contains('abc'))]
df[(df['PERIOD'].str.contains('Jan')) & (df['REFERENCE'].str.contains('abc'))]

.loc

df.loc[(df['PERIOD'].str.contains('Jan')) & (df['REFERENCE'].str.contains('abc'))]
df[(df['PERIOD'].str.contains('Jan')) & (df['REFERENCE'].str.contains('abc'))]
输出:

   REFERENCE  PERIOD  QTY  PRICE
0    abc123  Jan-20   20   21.2

有趣的是,我记得最后一个条件需要用括号括起来。现在似乎没有他们也行。