熊猫df的简单bs4脚本

时间:2018-12-11 23:12:34

标签: python pandas beautifulsoup

非常简单的问题,我有一个正在抓取一些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

1 个答案:

答案 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