Почему это не зацикливается на весь мой почтовый индекс? - PullRequest
0 голосов
/ 10 июня 2019

Когда я запускаю свой код и добавляю операторы печати в цикл for, почтовый индекс, город и регион распечатываются правильно для первого почтового индекса, но он никогда не переходит к моему следующему почтовому индексу.Когда я распечатываю свой DataFrame, все значения устанавливаются в NaN.

Я попытался запустить общий цикл for для печати каждого почтового индекса отдельно в PyCharm, и он печатает только первый почтовый индекс, но когда я запускаютот же код в Jupyter Notebook, каждый почтовый индекс печатается

for z in zipcodes:

    # gets the website to find the closest big city
    res = requests.get('https://www.travelmath.com/cities-near/' + z)
    soup = bs4.BeautifulSoup(res.text, 'html.parser')
    elems = soup.select('#EchoTopic > div:nth-child(1) > ul:nth-child(8) > li:nth-child(1) > a:nth-child(2)')
    place = elems[0].text.strip()
    city, state = place.split(',')

    # uses the city found above to find the text in the webpage and the region it corresponds to
    newres = requests.get('https://www.almanac.com/weather/longrange')
    newsoup = bs4.BeautifulSoup(newres.text, 'html.parser')
    newelems = newsoup.find('td', text=city).parent.parent
    alltext = newelems.text
    region = find_region(alltext) # helper regex function I wrote

    # appends the zip code, city, and region to the DataFrame
    regions.append([z, city, region])

печатает только первый почтовый индекс, город и регион и возвращает DataFrame из NaN вместо распечатки почти 4000 почтовых индексов и связанных с нимиинформацию и не записывает ее в DataFrame

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Когда вы используете метод дополнения данных, вам нужно выполнить присвоение.

Попробуйте добавить:

regions = regions.append([z,city,region])
0 голосов
/ 11 июня 2019

Код пытался перебрать столбцы моего DataFrame, который оказался первым почтовым индексом, потому что в моем csv не было заголовка столбца. Вместе с ответом Дэна Виснера я изменил:

for i in zipcodes.index:
    z = zipcodes.iloc[i]['zip codes']
    res = requests.get('https://www.travelmath.com/cities-near/' + str(z))
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...