【问题标题】:Python For Loop DataFramePython For 循环数据框
【发布时间】:2018-05-13 15:38:32
【问题描述】:

请参阅下面我目前拥有的以下代码以及随之而来的错误。

 companynames = []
for x in urls:
    website_nametext = requests.get(x)
    all_text = website_nametext.text
    all_soup = BeautifulSoup(all_text, 'html.parser')
    companynames.append(all_soup.h1.get_text())
overall_data = pd.DataFrame(data=[companynames], columns=['Company Name'])

我收到以下错误

AssertionError: 1 columns passed, passed data had 3 columns

如果我要更改代码以放置三列,那么它允许创建数据框。请参阅下面的代码。

    companynames = []
for x in urls:
    website_nametext = requests.get(x)
    all_text = website_nametext.text
    all_soup = BeautifulSoup(all_text, 'html.parser')
    companynames.append(all_soup.h1.get_text())
overall_data = pd.DataFrame(data=[companynames], columns=['Company Name', 'Company Name', 'Company Name'])

但是,我希望结果 'x' 、 'y' 和 'z' 位于一列中,并且每个名称位于单独的行中。而不是根据我的初始代码有三个单独的列,但显然这会产生错误。

我该怎么做?

【问题讨论】:

  • 你的意思是data=companynames
  • 你能展示一下companynames 的样子吗?很难说该怎么做,但您可以尝试使用 more_itertools 将其展平
  • 当您打印 (companynames) 时,这是输出 -- ['Etimex ', 'Comptage Immobilier Services (CIS) ', 'Salter Housewares ']

标签: python python-3.x pandas for-loop beautifulsoup


【解决方案1】:

尝试在 pd.DataFrame 调用中去掉公司名称周围的方括号。用括号它是一个列表列表,虽然只有一个,但它有效地将其旋转了 90 度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    相关资源
    最近更新 更多