from bs4 import BeautifulSoup import pandas as pd # HTMLデータ html = “”” <table class=”grid-look”> <thead class=”product-grid-top”> <tr> <td>Color</td> <td>Size</td> <td>Stock</td> </tr> </thead> <tbody id=”product-grid” class=”product-grid-center”> <tr class=”item”> <td>BLACK</td> <td>S</td> <td>在庫有り</td> </tr> <tr class=”item”> <td>BLACK</td> <td>M</td> <td>在庫有り</td> </tr> <tr class=”item”> <td>GRAY</td> <td>L</td> <td>廃番</td> </tr> <tr class=”item”> <td>BLACK</td> <td>XL</td> <td>在庫有り</td> </tr> </tbody> </table> “”” # BeautifulSoupでHTMLを解析 soup = BeautifulSoup(html, ‘html.parser’) # データを抽出してリストに格納 data = [] for tr in soup.find_all(‘tbody’)[0].find_all(‘tr’): tds = tr.find_all(‘td’) if len(tds) == 3: data.append([tds[0].text.strip(), tds[1].text.strip(), tds[2].text.strip()]) # データをDataFrameに変換 df = pd.DataFrame(data, columns=[‘Color’, ‘Size’, ‘Stock’]) # 結果を表示 df このdfから、BLACKのMを探す方法

DataFrameから条件に合う行を抽出する方法はいくつかありますが、一般的な方法は以下の通りです。

  1. ブールインデックスを使用する方法:
python
black_m = df[(df['Color'] == 'BLACK') & (df['Size'] == 'M')]
  1. クエリを使用する方法:
python
black_m = df.query("Color == 'BLACK' and Size == 'M'")

どちらの方法でも、BLACKでかつMサイズの行が抽出されます。black_mには該当する行が含まれ、それを表示することができます。

未分類

Posted by ぼっち