простой скрипт bs4 для панд df - PullRequest
0 голосов
/ 12 декабря 2018

очень простой вопрос, у меня есть сценарий, над которым я работаю, чтобы очистить некоторые веб-данные:

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 голосов
/ 12 декабря 2018
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, и присваивает столбец «Цена» этих строк тому, что вы только что очистили

df.loc[df['Product ID'] == x,'Price'] = rp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...