【问题标题】:How do I store my scraped values into a dataframe once all the pages are looped and values append into my lists?一旦所有页面都被循环并且值附加到我的列表中,我如何将抓取的值存储到数据框中?
【发布时间】:2019-04-15 14:26:44
【问题描述】:

目前,我的数据框正在打印出 2 个数据框,但我希望它只是一个数据框,其中包含从 omp_name_lists and comp_rating_lists 传递的所有值。我知道该函数正在逐页传递值,所以我想知道如何告诉 python 等待所有页面值追加,然后 create_dataframe

def get_data(get_comp_name,get_comp_rating):


    comp_name_lists, comp_rating_lists = [],[]
    for i, v in  zip(get_comp_name, get_comp_rating):
        comp_name_lists.append(i.a.text)
        comp_rating_lists.append(v.text)

    return create_dataframe(comp_name_lists,comp_rating_lists)

def create_dataframe(comp_name_lists,comp_rating_lists): # This is where 
    """This gets all of our data that we scraped and stores into a pandas dataframe"""
    df = pd.DataFrame({'CompanyName' : comp_name_lists, 'CompanyRating' : comp_rating_lists})
    df = df.reset_index(drop=True)
    print(df)

期望的输出:

  A              B
0 a              3
1 b              7
2 c              1
3 d              2
4 e              8
5 f              9
6 g              7
7 h              8

【问题讨论】:

    标签: python python-3.x web-scraping beautifulsoup request


    【解决方案1】:

    如果你想成为一个包含所有值的数据框,那么你应该有一个全局变量 因为它不会重新初始化,除非你重新启动脚本。如果您通过return create_dataframe(comp_name_lists,comp_rating_lists) 传递值,它将创建一个独立于其他空间的新空间,并且 df 的值是空的,这意味着您无法以这种方式完成您期望的事情。在我的考虑中,请在完成获取数据后创建一个数据框

    resultset = {'CompanyName' : [], 'CompanyRating' : []}
    
    def get_data(get_comp_name,get_comp_rating):
    
    
        comp_name_lists, comp_rating_lists = [],[]
        for i, v in  zip(get_comp_name, get_comp_rating):
            comp_name_lists.append(i.a.text)
            comp_rating_lists.append(v.text)
    
        resultset["CompanyName"] += comp_name_lists
        resultset["CompanyRating"] += comp_rating_lists
    
    def create_dataframe(data): # This is where 
        """This gets all of our data that we scraped and stores into a pandas dataframe"""
        df = pd.DataFrame(data)
        df = df.reset_index(drop=True)
        print(df)
    

    【讨论】:

    • 非常感谢! Dam 全局变量,当我需要它们时,我从不使用它们,哈哈。
    猜你喜欢
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 2017-07-15
    • 2022-01-17
    • 1970-01-01
    • 2019-10-12
    相关资源
    最近更新 更多