Python 使用多个loc()
我试图在下表中使用multiple loc(),但不幸的是,代码给了我一个错误,说明: ValueError:数据帧的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 我的df如下所示: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
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
有趣的是,我记得最后一个条件需要用括号括起来。现在似乎没有他们也行。