Selecting_Rows.html 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355
  1. ---
  2. redirect_from:
  3. - "/chapters/06/2/selecting-rows"
  4. interact_link: content/chapters/06/2/Selecting_Rows.ipynb
  5. kernel_name: python3
  6. has_widgets: false
  7. title: |-
  8. Selecting Rows
  9. prev_page:
  10. url: /chapters/06/1/Sorting_Rows.html
  11. title: |-
  12. Sorting Rows
  13. next_page:
  14. url: /chapters/06/3/Example_Trends_in_the_Population_of_the_United_States.html
  15. title: |-
  16. Example: Population Trends
  17. comment: "***PROGRAMMATICALLY GENERATED, DO NOT EDIT. SEE ORIGINAL FILES IN /content***"
  18. ---
  19. <div class="jb_cell tag_remove_input">
  20. <div class="cell border-box-sizing code_cell rendered">
  21. </div>
  22. </div>
  23. <div class="jb_cell tag_remove_input">
  24. <div class="cell border-box-sizing code_cell rendered">
  25. </div>
  26. </div>
  27. <div class="jb_cell">
  28. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  29. <div class="text_cell_render border-box-sizing rendered_html">
  30. <h1 id="Selecting-Rows">Selecting Rows<a class="anchor-link" href="#Selecting-Rows"> </a></h1><p>Often, we would like to extract just those rows that correspond to entries with a particular feature. For example, we might want only the rows corresponding to the Warriors, or to players who earned more than $\$10$ million. Or we might just want the top five earners.</p>
  31. </div>
  32. </div>
  33. </div>
  34. </div>
  35. <div class="jb_cell">
  36. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  37. <div class="text_cell_render border-box-sizing rendered_html">
  38. <h3 id="Specified-Rows">Specified Rows<a class="anchor-link" href="#Specified-Rows"> </a></h3><p>The Table method <code>take</code> does just that – it takes a specified set of rows. Its argument is a row index or array of indices, and it creates a new table consisting of only those rows.</p>
  39. <p>For example, if we wanted just the first row of <code>nba</code>, we could use <code>take</code> as follows.</p>
  40. </div>
  41. </div>
  42. </div>
  43. </div>
  44. <div class="jb_cell">
  45. <div class="cell border-box-sizing code_cell rendered">
  46. <div class="input">
  47. <div class="inner_cell">
  48. <div class="input_area">
  49. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span>
  50. </pre></div>
  51. </div>
  52. </div>
  53. </div>
  54. <div class="output_wrapper">
  55. <div class="output">
  56. <div class="jb_output_wrapper }}">
  57. <div class="output_area">
  58. <div class="output_html rendered_html output_subarea output_execute_result">
  59. <table border="1" class="dataframe">
  60. <thead>
  61. <tr>
  62. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  63. </tr>
  64. </thead>
  65. <tbody>
  66. <tr>
  67. <td>Paul Millsap </td> <td>PF </td> <td>Atlanta Hawks</td> <td>18.6717</td>
  68. </tr>
  69. <tr>
  70. <td>Al Horford </td> <td>C </td> <td>Atlanta Hawks</td> <td>12 </td>
  71. </tr>
  72. <tr>
  73. <td>Tiago Splitter </td> <td>C </td> <td>Atlanta Hawks</td> <td>9.75625</td>
  74. </tr>
  75. <tr>
  76. <td>Jeff Teague </td> <td>PG </td> <td>Atlanta Hawks</td> <td>8 </td>
  77. </tr>
  78. <tr>
  79. <td>Kyle Korver </td> <td>SG </td> <td>Atlanta Hawks</td> <td>5.74648</td>
  80. </tr>
  81. <tr>
  82. <td>Thabo Sefolosha </td> <td>SF </td> <td>Atlanta Hawks</td> <td>4 </td>
  83. </tr>
  84. <tr>
  85. <td>Mike Scott </td> <td>PF </td> <td>Atlanta Hawks</td> <td>3.33333</td>
  86. </tr>
  87. <tr>
  88. <td>Kent Bazemore </td> <td>SF </td> <td>Atlanta Hawks</td> <td>2 </td>
  89. </tr>
  90. <tr>
  91. <td>Dennis Schroder </td> <td>PG </td> <td>Atlanta Hawks</td> <td>1.7634 </td>
  92. </tr>
  93. <tr>
  94. <td>Tim Hardaway Jr.</td> <td>SG </td> <td>Atlanta Hawks</td> <td>1.30452</td>
  95. </tr>
  96. </tbody>
  97. </table>
  98. <p>... (407 rows omitted)</p>
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. <div class="jb_cell">
  107. <div class="cell border-box-sizing code_cell rendered">
  108. <div class="input">
  109. <div class="inner_cell">
  110. <div class="input_area">
  111. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">take</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
  112. </pre></div>
  113. </div>
  114. </div>
  115. </div>
  116. <div class="output_wrapper">
  117. <div class="output">
  118. <div class="jb_output_wrapper }}">
  119. <div class="output_area">
  120. <div class="output_html rendered_html output_subarea output_execute_result">
  121. <table border="1" class="dataframe">
  122. <thead>
  123. <tr>
  124. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  125. </tr>
  126. </thead>
  127. <tbody>
  128. <tr>
  129. <td>Paul Millsap</td> <td>PF </td> <td>Atlanta Hawks</td> <td>18.6717</td>
  130. </tr>
  131. </tbody>
  132. </table>
  133. </div>
  134. </div>
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. <div class="jb_cell">
  141. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  142. <div class="text_cell_render border-box-sizing rendered_html">
  143. <p>This is a new table with just the single row that we specified.</p>
  144. <p>We could also get the fourth, fifth, and sixth rows by specifying a range of indices as the argument.</p>
  145. </div>
  146. </div>
  147. </div>
  148. </div>
  149. <div class="jb_cell">
  150. <div class="cell border-box-sizing code_cell rendered">
  151. <div class="input">
  152. <div class="inner_cell">
  153. <div class="input_area">
  154. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">take</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
  155. </pre></div>
  156. </div>
  157. </div>
  158. </div>
  159. <div class="output_wrapper">
  160. <div class="output">
  161. <div class="jb_output_wrapper }}">
  162. <div class="output_area">
  163. <div class="output_html rendered_html output_subarea output_execute_result">
  164. <table border="1" class="dataframe">
  165. <thead>
  166. <tr>
  167. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  168. </tr>
  169. </thead>
  170. <tbody>
  171. <tr>
  172. <td>Jeff Teague </td> <td>PG </td> <td>Atlanta Hawks</td> <td>8 </td>
  173. </tr>
  174. <tr>
  175. <td>Kyle Korver </td> <td>SG </td> <td>Atlanta Hawks</td> <td>5.74648</td>
  176. </tr>
  177. <tr>
  178. <td>Thabo Sefolosha</td> <td>SF </td> <td>Atlanta Hawks</td> <td>4 </td>
  179. </tr>
  180. </tbody>
  181. </table>
  182. </div>
  183. </div>
  184. </div>
  185. </div>
  186. </div>
  187. </div>
  188. </div>
  189. <div class="jb_cell">
  190. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  191. <div class="text_cell_render border-box-sizing rendered_html">
  192. <p>If we want a table of the top 5 highest paid players, we can first sort the list by salary and then <code>take</code> the first five rows:</p>
  193. </div>
  194. </div>
  195. </div>
  196. </div>
  197. <div class="jb_cell">
  198. <div class="cell border-box-sizing code_cell rendered">
  199. <div class="input">
  200. <div class="inner_cell">
  201. <div class="input_area">
  202. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="s1">&#39;SALARY&#39;</span><span class="p">,</span> <span class="n">descending</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">take</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">5</span><span class="p">))</span>
  203. </pre></div>
  204. </div>
  205. </div>
  206. </div>
  207. <div class="output_wrapper">
  208. <div class="output">
  209. <div class="jb_output_wrapper }}">
  210. <div class="output_area">
  211. <div class="output_html rendered_html output_subarea output_execute_result">
  212. <table border="1" class="dataframe">
  213. <thead>
  214. <tr>
  215. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  216. </tr>
  217. </thead>
  218. <tbody>
  219. <tr>
  220. <td>Kobe Bryant </td> <td>SF </td> <td>Los Angeles Lakers </td> <td>25 </td>
  221. </tr>
  222. <tr>
  223. <td>Joe Johnson </td> <td>SF </td> <td>Brooklyn Nets </td> <td>24.8949</td>
  224. </tr>
  225. <tr>
  226. <td>LeBron James </td> <td>SF </td> <td>Cleveland Cavaliers</td> <td>22.9705</td>
  227. </tr>
  228. <tr>
  229. <td>Carmelo Anthony</td> <td>SF </td> <td>New York Knicks </td> <td>22.875 </td>
  230. </tr>
  231. <tr>
  232. <td>Dwight Howard </td> <td>C </td> <td>Houston Rockets </td> <td>22.3594</td>
  233. </tr>
  234. </tbody>
  235. </table>
  236. </div>
  237. </div>
  238. </div>
  239. </div>
  240. </div>
  241. </div>
  242. </div>
  243. <div class="jb_cell">
  244. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  245. <div class="text_cell_render border-box-sizing rendered_html">
  246. <h3 id="Rows-Corresponding-to-a-Specified-Feature">Rows Corresponding to a Specified Feature<a class="anchor-link" href="#Rows-Corresponding-to-a-Specified-Feature"> </a></h3><p>More often, we will want to access data in a set of rows that have a certain feature, but whose indices we don't know ahead of time. For example, we might want data on all the players who made more than $\$10$ million, but we don't want to spend time counting rows in the sorted table.</p>
  247. <p>The method <code>where</code> does the job for us. Its output is a table with the same columns as the original but only the rows <em>where</em> the feature occurs.</p>
  248. <p>The first argument of <code>where</code> is the label of the column that contains the information about whether or not a row has the feature we want. If the feature is "made more than $\$10$ million", the column is <code>SALARY</code>.</p>
  249. <p>The second argument of <code>where</code> is a way of specifying the feature. A couple of examples will make the general method of specification easier to understand.</p>
  250. <p>In the first example, we extract the data for all those who earned more than $\$10$ million.</p>
  251. </div>
  252. </div>
  253. </div>
  254. </div>
  255. <div class="jb_cell">
  256. <div class="cell border-box-sizing code_cell rendered">
  257. <div class="input">
  258. <div class="inner_cell">
  259. <div class="input_area">
  260. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;SALARY&#39;</span><span class="p">,</span> <span class="n">are</span><span class="o">.</span><span class="n">above</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span>
  261. </pre></div>
  262. </div>
  263. </div>
  264. </div>
  265. <div class="output_wrapper">
  266. <div class="output">
  267. <div class="jb_output_wrapper }}">
  268. <div class="output_area">
  269. <div class="output_html rendered_html output_subarea output_execute_result">
  270. <table border="1" class="dataframe">
  271. <thead>
  272. <tr>
  273. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  274. </tr>
  275. </thead>
  276. <tbody>
  277. <tr>
  278. <td>Paul Millsap </td> <td>PF </td> <td>Atlanta Hawks </td> <td>18.6717</td>
  279. </tr>
  280. <tr>
  281. <td>Al Horford </td> <td>C </td> <td>Atlanta Hawks </td> <td>12 </td>
  282. </tr>
  283. <tr>
  284. <td>Joe Johnson </td> <td>SF </td> <td>Brooklyn Nets </td> <td>24.8949</td>
  285. </tr>
  286. <tr>
  287. <td>Thaddeus Young</td> <td>PF </td> <td>Brooklyn Nets </td> <td>11.236 </td>
  288. </tr>
  289. <tr>
  290. <td>Al Jefferson </td> <td>C </td> <td>Charlotte Hornets</td> <td>13.5 </td>
  291. </tr>
  292. <tr>
  293. <td>Nicolas Batum </td> <td>SG </td> <td>Charlotte Hornets</td> <td>13.1253</td>
  294. </tr>
  295. <tr>
  296. <td>Kemba Walker </td> <td>PG </td> <td>Charlotte Hornets</td> <td>12 </td>
  297. </tr>
  298. <tr>
  299. <td>Derrick Rose </td> <td>PG </td> <td>Chicago Bulls </td> <td>20.0931</td>
  300. </tr>
  301. <tr>
  302. <td>Jimmy Butler </td> <td>SG </td> <td>Chicago Bulls </td> <td>16.4075</td>
  303. </tr>
  304. <tr>
  305. <td>Joakim Noah </td> <td>C </td> <td>Chicago Bulls </td> <td>13.4 </td>
  306. </tr>
  307. </tbody>
  308. </table>
  309. <p>... (59 rows omitted)</p>
  310. </div>
  311. </div>
  312. </div>
  313. </div>
  314. </div>
  315. </div>
  316. </div>
  317. <div class="jb_cell">
  318. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  319. <div class="text_cell_render border-box-sizing rendered_html">
  320. <p>The use of the argument <code>are.above(10)</code> ensured that each selected row had a value of <code>SALARY</code> that was greater than 10.</p>
  321. <p>There are 69 rows in the new table, corresponding to the 69 players who made more than $10$ million dollars. Arranging these rows in order makes the data easier to analyze. DeMar DeRozan of the Toronto Raptors was the "poorest" of this group, at a salary of just over $10$ million dollars.</p>
  322. </div>
  323. </div>
  324. </div>
  325. </div>
  326. <div class="jb_cell">
  327. <div class="cell border-box-sizing code_cell rendered">
  328. <div class="input">
  329. <div class="inner_cell">
  330. <div class="input_area">
  331. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;SALARY&#39;</span><span class="p">,</span> <span class="n">are</span><span class="o">.</span><span class="n">above</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="s1">&#39;SALARY&#39;</span><span class="p">)</span>
  332. </pre></div>
  333. </div>
  334. </div>
  335. </div>
  336. <div class="output_wrapper">
  337. <div class="output">
  338. <div class="jb_output_wrapper }}">
  339. <div class="output_area">
  340. <div class="output_html rendered_html output_subarea output_execute_result">
  341. <table border="1" class="dataframe">
  342. <thead>
  343. <tr>
  344. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  345. </tr>
  346. </thead>
  347. <tbody>
  348. <tr>
  349. <td>DeMar DeRozan </td> <td>SG </td> <td>Toronto Raptors </td> <td>10.05 </td>
  350. </tr>
  351. <tr>
  352. <td>Gerald Wallace </td> <td>SF </td> <td>Philadelphia 76ers </td> <td>10.1059</td>
  353. </tr>
  354. <tr>
  355. <td>Luol Deng </td> <td>SF </td> <td>Miami Heat </td> <td>10.1516</td>
  356. </tr>
  357. <tr>
  358. <td>Monta Ellis </td> <td>SG </td> <td>Indiana Pacers </td> <td>10.3 </td>
  359. </tr>
  360. <tr>
  361. <td>Wilson Chandler</td> <td>SF </td> <td>Denver Nuggets </td> <td>10.4494</td>
  362. </tr>
  363. <tr>
  364. <td>Brendan Haywood</td> <td>C </td> <td>Cleveland Cavaliers </td> <td>10.5225</td>
  365. </tr>
  366. <tr>
  367. <td>Jrue Holiday </td> <td>PG </td> <td>New Orleans Pelicans</td> <td>10.5955</td>
  368. </tr>
  369. <tr>
  370. <td>Tyreke Evans </td> <td>SG </td> <td>New Orleans Pelicans</td> <td>10.7346</td>
  371. </tr>
  372. <tr>
  373. <td>Marcin Gortat </td> <td>C </td> <td>Washington Wizards </td> <td>11.2174</td>
  374. </tr>
  375. <tr>
  376. <td>Thaddeus Young </td> <td>PF </td> <td>Brooklyn Nets </td> <td>11.236 </td>
  377. </tr>
  378. </tbody>
  379. </table>
  380. <p>... (59 rows omitted)</p>
  381. </div>
  382. </div>
  383. </div>
  384. </div>
  385. </div>
  386. </div>
  387. </div>
  388. <div class="jb_cell">
  389. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  390. <div class="text_cell_render border-box-sizing rendered_html">
  391. <p>How much did Stephen Curry make? For the answer, we have to access the row where the value of <code>PLAYER</code> is equal to <code>Stephen Curry</code>. That is placed a table consisting of just one line:</p>
  392. </div>
  393. </div>
  394. </div>
  395. </div>
  396. <div class="jb_cell">
  397. <div class="cell border-box-sizing code_cell rendered">
  398. <div class="input">
  399. <div class="inner_cell">
  400. <div class="input_area">
  401. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;PLAYER&#39;</span><span class="p">,</span> <span class="n">are</span><span class="o">.</span><span class="n">equal_to</span><span class="p">(</span><span class="s1">&#39;Stephen Curry&#39;</span><span class="p">))</span>
  402. </pre></div>
  403. </div>
  404. </div>
  405. </div>
  406. <div class="output_wrapper">
  407. <div class="output">
  408. <div class="jb_output_wrapper }}">
  409. <div class="output_area">
  410. <div class="output_html rendered_html output_subarea output_execute_result">
  411. <table border="1" class="dataframe">
  412. <thead>
  413. <tr>
  414. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  415. </tr>
  416. </thead>
  417. <tbody>
  418. <tr>
  419. <td>Stephen Curry</td> <td>PG </td> <td>Golden State Warriors</td> <td>11.3708</td>
  420. </tr>
  421. </tbody>
  422. </table>
  423. </div>
  424. </div>
  425. </div>
  426. </div>
  427. </div>
  428. </div>
  429. </div>
  430. <div class="jb_cell">
  431. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  432. <div class="text_cell_render border-box-sizing rendered_html">
  433. <p>Curry made just under $\$11.4$ million dollars. That's a lot of money, but it's less than half the salary of LeBron James. You'll find that salary in the "Top 5" table earlier in this section, or you could find it replacing <code>'Stephen Curry'</code> by <code>'LeBron James'</code> in the line of code above.</p>
  434. <p>In the code, <code>are</code> is used again, but this time with the <em>predicate</em> <code>equal_to</code> instead of <code>above</code>. Thus for example you can get a table of all the Warriors:</p>
  435. </div>
  436. </div>
  437. </div>
  438. </div>
  439. <div class="jb_cell">
  440. <div class="cell border-box-sizing code_cell rendered">
  441. <div class="input">
  442. <div class="inner_cell">
  443. <div class="input_area">
  444. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;TEAM&#39;</span><span class="p">,</span> <span class="n">are</span><span class="o">.</span><span class="n">equal_to</span><span class="p">(</span><span class="s1">&#39;Golden State Warriors&#39;</span><span class="p">))</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
  445. </pre></div>
  446. </div>
  447. </div>
  448. </div>
  449. <div class="output_wrapper">
  450. <div class="output">
  451. <div class="jb_output_wrapper }}">
  452. <div class="output_area">
  453. <div class="output_html rendered_html output_subarea ">
  454. <table border="1" class="dataframe">
  455. <thead>
  456. <tr>
  457. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  458. </tr>
  459. </thead>
  460. <tbody>
  461. <tr>
  462. <td>Klay Thompson </td> <td>SG </td> <td>Golden State Warriors</td> <td>15.501 </td>
  463. </tr>
  464. <tr>
  465. <td>Draymond Green </td> <td>PF </td> <td>Golden State Warriors</td> <td>14.2609 </td>
  466. </tr>
  467. <tr>
  468. <td>Andrew Bogut </td> <td>C </td> <td>Golden State Warriors</td> <td>13.8 </td>
  469. </tr>
  470. <tr>
  471. <td>Andre Iguodala </td> <td>SF </td> <td>Golden State Warriors</td> <td>11.7105 </td>
  472. </tr>
  473. <tr>
  474. <td>Stephen Curry </td> <td>PG </td> <td>Golden State Warriors</td> <td>11.3708 </td>
  475. </tr>
  476. <tr>
  477. <td>Jason Thompson </td> <td>PF </td> <td>Golden State Warriors</td> <td>7.00847 </td>
  478. </tr>
  479. <tr>
  480. <td>Shaun Livingston </td> <td>PG </td> <td>Golden State Warriors</td> <td>5.54373 </td>
  481. </tr>
  482. <tr>
  483. <td>Harrison Barnes </td> <td>SF </td> <td>Golden State Warriors</td> <td>3.8734 </td>
  484. </tr>
  485. <tr>
  486. <td>Marreese Speights</td> <td>C </td> <td>Golden State Warriors</td> <td>3.815 </td>
  487. </tr>
  488. <tr>
  489. <td>Leandro Barbosa </td> <td>SG </td> <td>Golden State Warriors</td> <td>2.5 </td>
  490. </tr>
  491. <tr>
  492. <td>Festus Ezeli </td> <td>C </td> <td>Golden State Warriors</td> <td>2.00875 </td>
  493. </tr>
  494. <tr>
  495. <td>Brandon Rush </td> <td>SF </td> <td>Golden State Warriors</td> <td>1.27096 </td>
  496. </tr>
  497. <tr>
  498. <td>Kevon Looney </td> <td>SF </td> <td>Golden State Warriors</td> <td>1.13196 </td>
  499. </tr>
  500. <tr>
  501. <td>Anderson Varejao </td> <td>PF </td> <td>Golden State Warriors</td> <td>0.289755</td>
  502. </tr>
  503. </tbody>
  504. </table>
  505. </div>
  506. </div>
  507. </div>
  508. </div>
  509. </div>
  510. </div>
  511. </div>
  512. <div class="jb_cell">
  513. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  514. <div class="text_cell_render border-box-sizing rendered_html">
  515. <p>This portion of the table is already sorted by salary, because the original table listed players sorted by salary within the same team. The <code>.show()</code> at the end of the line ensures that all rows are shown, not just the first 10.</p>
  516. <p>It is so common to ask for the rows for which some column is equal to some value that the <code>are.equal_to</code> call is optional. Instead, the <code>where</code> method can be called with only a column name and a value to achieve the same effect.</p>
  517. </div>
  518. </div>
  519. </div>
  520. </div>
  521. <div class="jb_cell">
  522. <div class="cell border-box-sizing code_cell rendered">
  523. <div class="input">
  524. <div class="inner_cell">
  525. <div class="input_area">
  526. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;TEAM&#39;</span><span class="p">,</span> <span class="s1">&#39;Denver Nuggets&#39;</span><span class="p">)</span> <span class="c1"># equivalent to nba.where(&#39;TEAM&#39;, are.equal_to(&#39;Denver Nuggets&#39;))</span>
  527. </pre></div>
  528. </div>
  529. </div>
  530. </div>
  531. <div class="output_wrapper">
  532. <div class="output">
  533. <div class="jb_output_wrapper }}">
  534. <div class="output_area">
  535. <div class="output_html rendered_html output_subarea output_execute_result">
  536. <table border="1" class="dataframe">
  537. <thead>
  538. <tr>
  539. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  540. </tr>
  541. </thead>
  542. <tbody>
  543. <tr>
  544. <td>Danilo Gallinari </td> <td>SF </td> <td>Denver Nuggets</td> <td>14 </td>
  545. </tr>
  546. <tr>
  547. <td>Kenneth Faried </td> <td>PF </td> <td>Denver Nuggets</td> <td>11.236 </td>
  548. </tr>
  549. <tr>
  550. <td>Wilson Chandler </td> <td>SF </td> <td>Denver Nuggets</td> <td>10.4494</td>
  551. </tr>
  552. <tr>
  553. <td>JJ Hickson </td> <td>C </td> <td>Denver Nuggets</td> <td>5.6135 </td>
  554. </tr>
  555. <tr>
  556. <td>Jameer Nelson </td> <td>PG </td> <td>Denver Nuggets</td> <td>4.345 </td>
  557. </tr>
  558. <tr>
  559. <td>Will Barton </td> <td>SF </td> <td>Denver Nuggets</td> <td>3.53333</td>
  560. </tr>
  561. <tr>
  562. <td>Emmanuel Mudiay </td> <td>PG </td> <td>Denver Nuggets</td> <td>3.10224</td>
  563. </tr>
  564. <tr>
  565. <td>Darrell Arthur </td> <td>PF </td> <td>Denver Nuggets</td> <td>2.814 </td>
  566. </tr>
  567. <tr>
  568. <td>Jusuf Nurkic </td> <td>C </td> <td>Denver Nuggets</td> <td>1.842 </td>
  569. </tr>
  570. <tr>
  571. <td>Joffrey Lauvergne</td> <td>C </td> <td>Denver Nuggets</td> <td>1.70972</td>
  572. </tr>
  573. </tbody>
  574. </table>
  575. <p>... (4 rows omitted)</p>
  576. </div>
  577. </div>
  578. </div>
  579. </div>
  580. </div>
  581. </div>
  582. </div>
  583. <div class="jb_cell">
  584. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  585. <div class="text_cell_render border-box-sizing rendered_html">
  586. <h3 id="Multiple-Features">Multiple Features<a class="anchor-link" href="#Multiple-Features"> </a></h3><p>You can access rows that have multiple specified features, by using <code>where</code> repeatedly. For example, here is a way to extract all the Point Guards whose salaries were over $\$15$ million.</p>
  587. </div>
  588. </div>
  589. </div>
  590. </div>
  591. <div class="jb_cell">
  592. <div class="cell border-box-sizing code_cell rendered">
  593. <div class="input">
  594. <div class="inner_cell">
  595. <div class="input_area">
  596. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;POSITION&#39;</span><span class="p">,</span> <span class="s1">&#39;PG&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;SALARY&#39;</span><span class="p">,</span> <span class="n">are</span><span class="o">.</span><span class="n">above</span><span class="p">(</span><span class="mi">15</span><span class="p">))</span>
  597. </pre></div>
  598. </div>
  599. </div>
  600. </div>
  601. <div class="output_wrapper">
  602. <div class="output">
  603. <div class="jb_output_wrapper }}">
  604. <div class="output_area">
  605. <div class="output_html rendered_html output_subarea output_execute_result">
  606. <table border="1" class="dataframe">
  607. <thead>
  608. <tr>
  609. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  610. </tr>
  611. </thead>
  612. <tbody>
  613. <tr>
  614. <td>Derrick Rose </td> <td>PG </td> <td>Chicago Bulls </td> <td>20.0931</td>
  615. </tr>
  616. <tr>
  617. <td>Kyrie Irving </td> <td>PG </td> <td>Cleveland Cavaliers </td> <td>16.4075</td>
  618. </tr>
  619. <tr>
  620. <td>Chris Paul </td> <td>PG </td> <td>Los Angeles Clippers </td> <td>21.4687</td>
  621. </tr>
  622. <tr>
  623. <td>Russell Westbrook</td> <td>PG </td> <td>Oklahoma City Thunder</td> <td>16.7442</td>
  624. </tr>
  625. <tr>
  626. <td>John Wall </td> <td>PG </td> <td>Washington Wizards </td> <td>15.852 </td>
  627. </tr>
  628. </tbody>
  629. </table>
  630. </div>
  631. </div>
  632. </div>
  633. </div>
  634. </div>
  635. </div>
  636. </div>
  637. <div class="jb_cell">
  638. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  639. <div class="text_cell_render border-box-sizing rendered_html">
  640. <h3 id="General-Form">General Form<a class="anchor-link" href="#General-Form"> </a></h3><p>By now you will have realized that the general way to create a new table by selecting rows with a given feature is to use <code>where</code> and <code>are</code> with the appropriate condition:</p>
  641. <p><code>original_table_name.where(column_label_string, are.condition)</code></p>
  642. </div>
  643. </div>
  644. </div>
  645. </div>
  646. <div class="jb_cell">
  647. <div class="cell border-box-sizing code_cell rendered">
  648. <div class="input">
  649. <div class="inner_cell">
  650. <div class="input_area">
  651. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;SALARY&#39;</span><span class="p">,</span> <span class="n">are</span><span class="o">.</span><span class="n">between</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mf">10.3</span><span class="p">))</span>
  652. </pre></div>
  653. </div>
  654. </div>
  655. </div>
  656. <div class="output_wrapper">
  657. <div class="output">
  658. <div class="jb_output_wrapper }}">
  659. <div class="output_area">
  660. <div class="output_html rendered_html output_subarea output_execute_result">
  661. <table border="1" class="dataframe">
  662. <thead>
  663. <tr>
  664. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  665. </tr>
  666. </thead>
  667. <tbody>
  668. <tr>
  669. <td>Luol Deng </td> <td>SF </td> <td>Miami Heat </td> <td>10.1516</td>
  670. </tr>
  671. <tr>
  672. <td>Gerald Wallace</td> <td>SF </td> <td>Philadelphia 76ers</td> <td>10.1059</td>
  673. </tr>
  674. <tr>
  675. <td>Danny Green </td> <td>SG </td> <td>San Antonio Spurs </td> <td>10 </td>
  676. </tr>
  677. <tr>
  678. <td>DeMar DeRozan </td> <td>SG </td> <td>Toronto Raptors </td> <td>10.05 </td>
  679. </tr>
  680. </tbody>
  681. </table>
  682. </div>
  683. </div>
  684. </div>
  685. </div>
  686. </div>
  687. </div>
  688. </div>
  689. <div class="jb_cell">
  690. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  691. <div class="text_cell_render border-box-sizing rendered_html">
  692. <p>Notice that the table above includes Danny Green who made $\$10$ million, but *not* Monta Ellis who made $\$10.3$ million. As elsewhere in Python, the range <code>between</code> includes the left end but not the right.</p>
  693. </div>
  694. </div>
  695. </div>
  696. </div>
  697. <div class="jb_cell">
  698. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  699. <div class="text_cell_render border-box-sizing rendered_html">
  700. <p>If we specify a condition that isn't satisfied by any row, we get a table with column labels but no rows.</p>
  701. </div>
  702. </div>
  703. </div>
  704. </div>
  705. <div class="jb_cell">
  706. <div class="cell border-box-sizing code_cell rendered">
  707. <div class="input">
  708. <div class="inner_cell">
  709. <div class="input_area">
  710. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;PLAYER&#39;</span><span class="p">,</span> <span class="n">are</span><span class="o">.</span><span class="n">equal_to</span><span class="p">(</span><span class="s1">&#39;Barack Obama&#39;</span><span class="p">))</span>
  711. </pre></div>
  712. </div>
  713. </div>
  714. </div>
  715. <div class="output_wrapper">
  716. <div class="output">
  717. <div class="jb_output_wrapper }}">
  718. <div class="output_area">
  719. <div class="output_html rendered_html output_subarea output_execute_result">
  720. <table border="1" class="dataframe">
  721. <thead>
  722. <tr>
  723. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  724. </tr>
  725. </thead>
  726. <tbody>
  727. </tbody>
  728. </table>
  729. </div>
  730. </div>
  731. </div>
  732. </div>
  733. </div>
  734. </div>
  735. </div>
  736. <div class="jb_cell">
  737. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  738. <div class="text_cell_render border-box-sizing rendered_html">
  739. <h3 id="Some-More-Conditions">Some More Conditions<a class="anchor-link" href="#Some-More-Conditions"> </a></h3><p>Here are some predicates of <code>are</code> that you might find useful. Note that <code>x</code> and <code>y</code> are numbers, <code>STRING</code> is a string, and <code>Z</code> is either a number or a string; you have to specify these depending on the feature you want.</p>
  740. <table>
  741. <thead><tr>
  742. <th><strong>Predicate</strong></th>
  743. <th>Description</th>
  744. </tr>
  745. </thead>
  746. <tbody>
  747. <tr>
  748. <td><code>are.equal_to(Z)</code></td>
  749. <td>Equal to <code>Z</code></td>
  750. </tr>
  751. <tr>
  752. <td><code>are.above(x)</code></td>
  753. <td>Greater than <code>x</code></td>
  754. </tr>
  755. <tr>
  756. <td><code>are.above_or_equal_to(x)</code></td>
  757. <td>Greater than or equal to <code>x</code></td>
  758. </tr>
  759. <tr>
  760. <td><code>are.below(x)</code></td>
  761. <td>Less than <code>x</code></td>
  762. </tr>
  763. <tr>
  764. <td><code>are.below_or_equal_to(x)</code></td>
  765. <td>Less than or equal to <code>x</code></td>
  766. </tr>
  767. <tr>
  768. <td><code>are.between(x, y)</code></td>
  769. <td>Greater than or equal to <code>x</code>, and less than <code>y</code></td>
  770. </tr>
  771. <tr>
  772. <td><code>are.strictly_between(x, y)</code></td>
  773. <td>Greater than <code>x</code> and less than <code>y</code></td>
  774. </tr>
  775. <tr>
  776. <td><code>are.between_or_equal_to(x, y)</code></td>
  777. <td>Greater than or equal to <code>x</code>, and less than or equal to <code>y</code></td>
  778. </tr>
  779. <tr>
  780. <td><code>are.containing(S)</code></td>
  781. <td>Contains the string <code>S</code></td>
  782. </tr>
  783. </tbody>
  784. </table>
  785. </div>
  786. </div>
  787. </div>
  788. </div>
  789. <div class="jb_cell">
  790. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  791. <div class="text_cell_render border-box-sizing rendered_html">
  792. <p>You can also specify the negation of any of these conditions, by using <code>.not_</code> before the condition:</p>
  793. <table>
  794. <thead><tr>
  795. <th><strong>Predicate</strong></th>
  796. <th>Description</th>
  797. </tr>
  798. </thead>
  799. <tbody>
  800. <tr>
  801. <td><code>are.not_equal_to(Z)</code></td>
  802. <td>Not equal to <code>Z</code></td>
  803. </tr>
  804. <tr>
  805. <td><code>are.not_above(x)</code></td>
  806. <td>Not above <code>x</code></td>
  807. </tr>
  808. </tbody>
  809. </table>
  810. </div>
  811. </div>
  812. </div>
  813. </div>
  814. <div class="jb_cell">
  815. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  816. <div class="text_cell_render border-box-sizing rendered_html">
  817. <p>... and so on. The usual rules of logic apply – for example, "not above x" is the same as "below or equal to x".</p>
  818. </div>
  819. </div>
  820. </div>
  821. </div>
  822. <div class="jb_cell">
  823. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  824. <div class="text_cell_render border-box-sizing rendered_html">
  825. <p>We end the section with a series of examples.</p>
  826. </div>
  827. </div>
  828. </div>
  829. </div>
  830. <div class="jb_cell">
  831. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  832. <div class="text_cell_render border-box-sizing rendered_html">
  833. <p>The use of <code>are.containing</code> can help save some typing. For example, you can just specify <code>Warriors</code> instead of <code>Golden State Warriors</code>:</p>
  834. </div>
  835. </div>
  836. </div>
  837. </div>
  838. <div class="jb_cell">
  839. <div class="cell border-box-sizing code_cell rendered">
  840. <div class="input">
  841. <div class="inner_cell">
  842. <div class="input_area">
  843. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;TEAM&#39;</span><span class="p">,</span> <span class="n">are</span><span class="o">.</span><span class="n">containing</span><span class="p">(</span><span class="s1">&#39;Warriors&#39;</span><span class="p">))</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
  844. </pre></div>
  845. </div>
  846. </div>
  847. </div>
  848. <div class="output_wrapper">
  849. <div class="output">
  850. <div class="jb_output_wrapper }}">
  851. <div class="output_area">
  852. <div class="output_html rendered_html output_subarea ">
  853. <table border="1" class="dataframe">
  854. <thead>
  855. <tr>
  856. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  857. </tr>
  858. </thead>
  859. <tbody>
  860. <tr>
  861. <td>Klay Thompson </td> <td>SG </td> <td>Golden State Warriors</td> <td>15.501 </td>
  862. </tr>
  863. <tr>
  864. <td>Draymond Green </td> <td>PF </td> <td>Golden State Warriors</td> <td>14.2609 </td>
  865. </tr>
  866. <tr>
  867. <td>Andrew Bogut </td> <td>C </td> <td>Golden State Warriors</td> <td>13.8 </td>
  868. </tr>
  869. <tr>
  870. <td>Andre Iguodala </td> <td>SF </td> <td>Golden State Warriors</td> <td>11.7105 </td>
  871. </tr>
  872. <tr>
  873. <td>Stephen Curry </td> <td>PG </td> <td>Golden State Warriors</td> <td>11.3708 </td>
  874. </tr>
  875. <tr>
  876. <td>Jason Thompson </td> <td>PF </td> <td>Golden State Warriors</td> <td>7.00847 </td>
  877. </tr>
  878. <tr>
  879. <td>Shaun Livingston </td> <td>PG </td> <td>Golden State Warriors</td> <td>5.54373 </td>
  880. </tr>
  881. <tr>
  882. <td>Harrison Barnes </td> <td>SF </td> <td>Golden State Warriors</td> <td>3.8734 </td>
  883. </tr>
  884. <tr>
  885. <td>Marreese Speights</td> <td>C </td> <td>Golden State Warriors</td> <td>3.815 </td>
  886. </tr>
  887. <tr>
  888. <td>Leandro Barbosa </td> <td>SG </td> <td>Golden State Warriors</td> <td>2.5 </td>
  889. </tr>
  890. <tr>
  891. <td>Festus Ezeli </td> <td>C </td> <td>Golden State Warriors</td> <td>2.00875 </td>
  892. </tr>
  893. <tr>
  894. <td>Brandon Rush </td> <td>SF </td> <td>Golden State Warriors</td> <td>1.27096 </td>
  895. </tr>
  896. <tr>
  897. <td>Kevon Looney </td> <td>SF </td> <td>Golden State Warriors</td> <td>1.13196 </td>
  898. </tr>
  899. <tr>
  900. <td>Anderson Varejao </td> <td>PF </td> <td>Golden State Warriors</td> <td>0.289755</td>
  901. </tr>
  902. </tbody>
  903. </table>
  904. </div>
  905. </div>
  906. </div>
  907. </div>
  908. </div>
  909. </div>
  910. </div>
  911. <div class="jb_cell">
  912. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  913. <div class="text_cell_render border-box-sizing rendered_html">
  914. <p>You can extract data for all the guards, both Point Guards and Shooting Guards:</p>
  915. </div>
  916. </div>
  917. </div>
  918. </div>
  919. <div class="jb_cell">
  920. <div class="cell border-box-sizing code_cell rendered">
  921. <div class="input">
  922. <div class="inner_cell">
  923. <div class="input_area">
  924. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">nba</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;POSITION&#39;</span><span class="p">,</span> <span class="n">are</span><span class="o">.</span><span class="n">containing</span><span class="p">(</span><span class="s1">&#39;G&#39;</span><span class="p">))</span>
  925. </pre></div>
  926. </div>
  927. </div>
  928. </div>
  929. <div class="output_wrapper">
  930. <div class="output">
  931. <div class="jb_output_wrapper }}">
  932. <div class="output_area">
  933. <div class="output_html rendered_html output_subarea output_execute_result">
  934. <table border="1" class="dataframe">
  935. <thead>
  936. <tr>
  937. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  938. </tr>
  939. </thead>
  940. <tbody>
  941. <tr>
  942. <td>Jeff Teague </td> <td>PG </td> <td>Atlanta Hawks </td> <td>8 </td>
  943. </tr>
  944. <tr>
  945. <td>Kyle Korver </td> <td>SG </td> <td>Atlanta Hawks </td> <td>5.74648 </td>
  946. </tr>
  947. <tr>
  948. <td>Dennis Schroder </td> <td>PG </td> <td>Atlanta Hawks </td> <td>1.7634 </td>
  949. </tr>
  950. <tr>
  951. <td>Tim Hardaway Jr.</td> <td>SG </td> <td>Atlanta Hawks </td> <td>1.30452 </td>
  952. </tr>
  953. <tr>
  954. <td>Jason Richardson</td> <td>SG </td> <td>Atlanta Hawks </td> <td>0.947276</td>
  955. </tr>
  956. <tr>
  957. <td>Lamar Patterson </td> <td>SG </td> <td>Atlanta Hawks </td> <td>0.525093</td>
  958. </tr>
  959. <tr>
  960. <td>Terran Petteway </td> <td>SG </td> <td>Atlanta Hawks </td> <td>0.525093</td>
  961. </tr>
  962. <tr>
  963. <td>Avery Bradley </td> <td>PG </td> <td>Boston Celtics</td> <td>7.73034 </td>
  964. </tr>
  965. <tr>
  966. <td>Isaiah Thomas </td> <td>PG </td> <td>Boston Celtics</td> <td>6.91287 </td>
  967. </tr>
  968. <tr>
  969. <td>Marcus Smart </td> <td>PG </td> <td>Boston Celtics</td> <td>3.43104 </td>
  970. </tr>
  971. </tbody>
  972. </table>
  973. <p>... (171 rows omitted)</p>
  974. </div>
  975. </div>
  976. </div>
  977. </div>
  978. </div>
  979. </div>
  980. </div>
  981. <div class="jb_cell">
  982. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  983. <div class="text_cell_render border-box-sizing rendered_html">
  984. <p>You can get all the players who were not Cleveland Cavaliers and had a salary of no less than $\$20$ million:</p>
  985. </div>
  986. </div>
  987. </div>
  988. </div>
  989. <div class="jb_cell">
  990. <div class="cell border-box-sizing code_cell rendered">
  991. <div class="input">
  992. <div class="inner_cell">
  993. <div class="input_area">
  994. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">other_than_Cavs</span> <span class="o">=</span> <span class="n">nba</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;TEAM&#39;</span><span class="p">,</span> <span class="n">are</span><span class="o">.</span><span class="n">not_equal_to</span><span class="p">(</span><span class="s1">&#39;Cleveland Cavaliers&#39;</span><span class="p">))</span>
  995. <span class="n">other_than_Cavs</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;SALARY&#39;</span><span class="p">,</span> <span class="n">are</span><span class="o">.</span><span class="n">not_below</span><span class="p">(</span><span class="mi">20</span><span class="p">))</span>
  996. </pre></div>
  997. </div>
  998. </div>
  999. </div>
  1000. <div class="output_wrapper">
  1001. <div class="output">
  1002. <div class="jb_output_wrapper }}">
  1003. <div class="output_area">
  1004. <div class="output_html rendered_html output_subarea output_execute_result">
  1005. <table border="1" class="dataframe">
  1006. <thead>
  1007. <tr>
  1008. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  1009. </tr>
  1010. </thead>
  1011. <tbody>
  1012. <tr>
  1013. <td>Joe Johnson </td> <td>SF </td> <td>Brooklyn Nets </td> <td>24.8949</td>
  1014. </tr>
  1015. <tr>
  1016. <td>Derrick Rose </td> <td>PG </td> <td>Chicago Bulls </td> <td>20.0931</td>
  1017. </tr>
  1018. <tr>
  1019. <td>Dwight Howard </td> <td>C </td> <td>Houston Rockets </td> <td>22.3594</td>
  1020. </tr>
  1021. <tr>
  1022. <td>Chris Paul </td> <td>PG </td> <td>Los Angeles Clippers </td> <td>21.4687</td>
  1023. </tr>
  1024. <tr>
  1025. <td>Kobe Bryant </td> <td>SF </td> <td>Los Angeles Lakers </td> <td>25 </td>
  1026. </tr>
  1027. <tr>
  1028. <td>Chris Bosh </td> <td>PF </td> <td>Miami Heat </td> <td>22.1927</td>
  1029. </tr>
  1030. <tr>
  1031. <td>Dwyane Wade </td> <td>SG </td> <td>Miami Heat </td> <td>20 </td>
  1032. </tr>
  1033. <tr>
  1034. <td>Carmelo Anthony</td> <td>SF </td> <td>New York Knicks </td> <td>22.875 </td>
  1035. </tr>
  1036. <tr>
  1037. <td>Kevin Durant </td> <td>SF </td> <td>Oklahoma City Thunder</td> <td>20.1586</td>
  1038. </tr>
  1039. </tbody>
  1040. </table>
  1041. </div>
  1042. </div>
  1043. </div>
  1044. </div>
  1045. </div>
  1046. </div>
  1047. </div>
  1048. <div class="jb_cell">
  1049. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  1050. <div class="text_cell_render border-box-sizing rendered_html">
  1051. <p>The same table can be created in many ways. Here is another, and no doubt you can think of more.</p>
  1052. </div>
  1053. </div>
  1054. </div>
  1055. </div>
  1056. <div class="jb_cell">
  1057. <div class="cell border-box-sizing code_cell rendered">
  1058. <div class="input">
  1059. <div class="inner_cell">
  1060. <div class="input_area">
  1061. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">other_than_Cavs</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s1">&#39;SALARY&#39;</span><span class="p">,</span> <span class="n">are</span><span class="o">.</span><span class="n">above_or_equal_to</span><span class="p">(</span><span class="mi">20</span><span class="p">))</span>
  1062. </pre></div>
  1063. </div>
  1064. </div>
  1065. </div>
  1066. <div class="output_wrapper">
  1067. <div class="output">
  1068. <div class="jb_output_wrapper }}">
  1069. <div class="output_area">
  1070. <div class="output_html rendered_html output_subarea output_execute_result">
  1071. <table border="1" class="dataframe">
  1072. <thead>
  1073. <tr>
  1074. <th>PLAYER</th> <th>POSITION</th> <th>TEAM</th> <th>SALARY</th>
  1075. </tr>
  1076. </thead>
  1077. <tbody>
  1078. <tr>
  1079. <td>Joe Johnson </td> <td>SF </td> <td>Brooklyn Nets </td> <td>24.8949</td>
  1080. </tr>
  1081. <tr>
  1082. <td>Derrick Rose </td> <td>PG </td> <td>Chicago Bulls </td> <td>20.0931</td>
  1083. </tr>
  1084. <tr>
  1085. <td>Dwight Howard </td> <td>C </td> <td>Houston Rockets </td> <td>22.3594</td>
  1086. </tr>
  1087. <tr>
  1088. <td>Chris Paul </td> <td>PG </td> <td>Los Angeles Clippers </td> <td>21.4687</td>
  1089. </tr>
  1090. <tr>
  1091. <td>Kobe Bryant </td> <td>SF </td> <td>Los Angeles Lakers </td> <td>25 </td>
  1092. </tr>
  1093. <tr>
  1094. <td>Chris Bosh </td> <td>PF </td> <td>Miami Heat </td> <td>22.1927</td>
  1095. </tr>
  1096. <tr>
  1097. <td>Dwyane Wade </td> <td>SG </td> <td>Miami Heat </td> <td>20 </td>
  1098. </tr>
  1099. <tr>
  1100. <td>Carmelo Anthony</td> <td>SF </td> <td>New York Knicks </td> <td>22.875 </td>
  1101. </tr>
  1102. <tr>
  1103. <td>Kevin Durant </td> <td>SF </td> <td>Oklahoma City Thunder</td> <td>20.1586</td>
  1104. </tr>
  1105. </tbody>
  1106. </table>
  1107. </div>
  1108. </div>
  1109. </div>
  1110. </div>
  1111. </div>
  1112. </div>
  1113. </div>
  1114. <div class="jb_cell">
  1115. <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
  1116. <div class="text_cell_render border-box-sizing rendered_html">
  1117. <p>As you can see, the use of <code>where</code> with <code>are</code> gives you great flexibility in accessing rows with features that interest you. Don't hesitate to experiment!</p>
  1118. </div>
  1119. </div>
  1120. </div>
  1121. </div>