【问题标题】:TypeError: to_append should be a Series or list/tuple of Series, got DataFrameTypeError: to_append 应该是 Series 或 Series 的列表/元组,得到 DataFrame
【发布时间】:2021-07-26 05:26:28
【问题描述】:

代码在早些时候运行,然后就停止了。

我不明白为什么,如果有人可以帮助我对这个主题有所了解,那就太棒了。

import urllib.request
from bs4 import BeautifulSoup as bs
import re
import pandas as pd
import requests


locations = ['las-vegas-nv','denver-co']
for location in locations:
    headers = {
        'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
    }



    url = f'https://www.apartments.com/{location}/1-bedrooms/'
    page = requests.get(url, headers=headers)
    soup = bs(page.text, 'lxml')
    table = soup.find("table", class_="rentTrendGrid")
    rows = []

    for tr in table.find_all('tr'):
        rows.append([td.text for td in tr.find_all(['th', 'td'])])

#header_row = rows[0]
    rows = list(zip(*rows[0:])) # tranpose the table
    df = pd.DataFrame(rows[1:], columns=rows[0])
    df['City'] = location
    dfs.append(df)
    df = pd.concat(dfs).reset_index(drop = True)
print(df)

【问题讨论】:

  • 什么是dfs?我没有看到它在任何地方定义。
  • 我只是在搞乱代码...我知道它没有定义但是当 dfs 等于 df 时它仍然会抛出相同的错误

标签: python pandas append concatenation


【解决方案1】:

原来我只需要从 for 循环中取出最后一部分

import urllib.request
from bs4 import BeautifulSoup as bs
import re
import pandas as pd
import requests


locations = ['las-vegas-nv','denver-co', 'lehi-ut']

dfs = []
for location in locations:
    headers = {
        'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
    }



    url = f'https://www.apartments.com/{location}/1-bedrooms/'
    page = requests.get(url, headers=headers)
    soup = bs(page.text, 'lxml')
    table = soup.find("table", class_="rentTrendGrid")
    rows = []

    for tr in table.find_all('tr'):
        rows.append([td.text for td in tr.find_all(['th', 'td'])])

#header_row = rows[0]
    rows = list(zip(*rows[0:])) # tranpose the table
    df = pd.DataFrame(rows[1:], columns=rows[0])
    df['City'] = location
    dfs.append(df)
df = pd.concat(dfs).reset_index(drop = True)
print(df)

【讨论】:

    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 2020-01-04
    • 2017-08-08
    • 2019-04-02
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多