非常简单的问题,我有一个正在抓取一些Web数据的脚本:
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
答案 0 :(得分:1)
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