Immortal463 2023-02-26 23:45 采纳率: 37.5%
浏览 58
已结题

python的pandas如何把一个由列表构成的双重列表转换成表格

想要给输出的加上列名,但是报错了。
错误如下:ValueError: Length mismatch: Expected axis has 1 elements, new values have 9 elements


```python
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from lxml import etree
from time import sleep
import pandas as pd
from bs4 import BeautifulSoup

def get_row(li):
    list1 = []
    l1_1 = li.find_all('a', limit=2)
    l1_2 = li.find_all('th')
    for x in l1_1:
        list1.append(x.string)
    for y in l1_2:
        list1.append(y.string)
    return list1

# 实例化一个浏览器对象
bro = webdriver.Chrome(executable_path='./chromedriver')
# 让浏览器发起一个指定url的请求
bro.get('http://vip.stock.finance.sina.com.cn/fund_center/index.html#hbphall')

# 获取浏览器当前界面的动态页面源码数据
page_text = bro.page_source
# 解析企业名称
soup = BeautifulSoup(page_text, "html.parser")

# 建立空列表
list_ji = []

# 开始爬取数据
for i in range(1, 3, 1):
    if i <= 414:
        j = 0
        for j in range(0, 40, 1):
            l1 = soup.find_all('tr', class_='red')
            list_ji.append(get_row(l1[j]))

        # 翻页
        next_button = bro.find_element(By.LINK_TEXT, '下一页')
        actions = ActionChains(bro)
        actions.click(next_button).perform()
    else:
        for k in range(0, 30, 1):
            l1 = soup.find_all('tr', class_='red')
            list_ji.append(get_row(l1[k]))


result = pd.DataFrame(zip(list_ji))
pd.set_option('display.max_rows', None) # 显示pandas所有行
result.columns = ["基金代码", "基金名称", "单位净值", "累计净值", "近三个月(%)", "近六个月(%)", "近一年(%)", "今年以来(%)", "成立以来(%)"]
print(result)
bro.quit()


![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/258933624776171.png "#left")
  • 写回答

2条回答 默认 最新

  • Dick_不周 2023-02-27 09:48
    关注

    。。。亲,构建Dataframe你可能还需要再熟悉一下。

    column = ["基金代码", "基金名称", "单位净值", "累计净值", "近三个月(%)", "近六个月(%)", "近一年(%)",
                      "今年以来(%)", "成立以来(%)"]
    result = pd.DataFrame(list_ji,columns=column)
    pd.set_option('display.max_rows', None)  # 显示pandas所有行
    

    有用请采纳

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月1日
  • 已采纳回答 2月27日
  • 创建了问题 2月26日