回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想做一个多重查询。这是我的数据框:</p>
<pre><code>data = {'Name':['Penny','Ben','Benny','Mark','Ben1','Ben2','Ben3'],
'Eng':[5,1,4,3,1,2,3],
'Math':[1,5,3,2,2,2,3],
'Physics':[2,5,3,1,1,2,3],
'Sports':[4,5,2,3,1,2,3],
'Total':[12,16,12,9,5,8,12],
'Group':['A','A','A','A','A','B','B']}
df1=pd.DataFrame(data, columns=['Name','Eng','Math','Physics','Sports','Total','Group'])
df1
</code></pre>
<p><a href="https://i.stack.imgur.com/9IZmC.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/9IZmC.png" alt=""/></a></p>
<p>我有3个问题:</p>
<ol>
<li>A组或B组</li>
<li>数学>;英格</li>
<li>名称以“B”开头</li>
</ol>
<p>我试着一个接一个地做</p>
<pre><code>df1[df1.Name.str.startswith('B')]
df1.query('Math > Eng')
df1[df1.Group == 'A'] #I cannot run the code with df1[df1.Group == 'A' or 'B']
</code></pre>
<p>然后,我尝试合并这些查询</p>
<pre><code>df1.query("'Math > Eng' & 'df1[df1.Name.str.startswith('B')]' & 'df1[df1.Group == 'A']")
TokenError: ('EOF in multi-line statement', (2, 0))
</code></pre>
<p>我还试图将<code>str.startswith()</code>传递到<code>df.query()</code></p>
<pre><code>df1.query("df1.Name.str.startswith('B')")
UndefinedVariableError: name 'df1' is not defined
</code></pre>
<p>我试过很多方法,但没有一种有效。我怎样才能把这些问题放在一起</p>