python - 熊猫 df 的简单 bs4 脚本
问题描述
非常简单的 Q,我有这个脚本,我正在处理它来抓取一些网络数据:
for x in df['Product ID']:
search_url = 'url' + x
uclient = uReq(search_url)
page_html = uclient.read()
uclient.close()
page_soup = soup(page_html,"html.parser")
rp = page_soup.findAll("h2",{"class" : 'highlightValue'})[0].text.strip()
将循环的这个结果写回我的数据框的最佳方法是什么?如果我分配一个新列让我们称之为 df['Price'] 它将在循环的每个元素中被覆盖,而我只希望它为 x 分配一个值。
data = ['12345','6789']
pd.DataFrame({'Product ID' : data})
因此,如果我的网站上 12345 = 25 英镑的价格和 6789 英镑 50 的价格我想分别分配回来,我是否遗漏了一些简单的东西?
期望的输出
Product ID Price
12345 £25
6789 £50
解决方案
data = ['12345','6789']
df = pd.DataFrame({'Product ID' : data})
for x in df['Product ID']:
search_url = 'url' + x
uclient = uReq(search_url)
page_html = uclient.read()
uclient.close()
page_soup = soup(page_html,"html.parser")
rp = page_soup.findAll("h2",{"class" : 'highlightValue'})[0].text.strip()
df.loc[df['Product ID'] == x,'Price'] = rp
下面的代码是选择与变量 x 的产品 ID 匹配的行,并将这些行的“价格”列分配给您刚刚抓取的内容
df.loc[df['Product ID'] == x,'Price'] = rp