熊猫连接数据帧导致数据帧不明确

我的目标是在每次迭代中将多个熊猫数据帧连接成单个数据帧。我正在抓取一个表并用它创建数据帧。下面是注释的代码。


def visit_table_links():

    links = grab_initial_links()


    df_final = None

    for obi in links:


        resp = requests.get(obi[1])

        tree = html.fromstring(resp.content)


        dflist = []


        for attr in tree.xpath('//th[contains(normalize-space(text()),  "sometext")]/ancestor::table/tbody/tr'):

            population = attr.xpath('normalize-space(string(.//td[2]))')

            try:

                population = population.replace(',', '')

                population = int(population)

                year = attr.xpath('normalize-space(string(.//td[1]))')

                year = re.findall(r'\d+', year)

                year = ''.join(year)

                year = int(year)



                #appending a to a list, 3 values first two integer last is string

                dflist.append([year, population, obi[0]])


            except Exception as e:

                pass


        #creating a dataframe which works fine


        df = pd.DataFrame(dflist, columns = ['Year', 'Population', 'Municipality'])


        #first time df_final is none so just make first df = df_final

        #next time df_final is previous dataframe so concat with the new one


        if df_final != None:

            df_final = pd.concat(df_final, df)

        else:


            df_final = df



visit_table_links()

这是即将到来的数据帧


第一个数据帧


   Year  Population Municipality

0  1970       10193   Cape Coral

1  1980       32103   Cape Coral

2  1990       74991   Cape Coral

3  2000      102286   Cape Coral

4  2010      154305   Cape Coral

5  2018      189343   Cape Coral



我已经搜索了很多线程并耗尽了我的资源,我是熊猫的新手,不明白为什么会发生这种情况,


首先,我认为这是因为重复的索引,然后我使用相同的错误将 uuid.uuid4.int()作为索引。df.set_index('ID', drop=True, inplace=True)


任何指导都将非常有帮助,谢谢。


编辑: 1


很抱歉没有明确错误是从


df_final = pd.concat(df_final, df)

当我尝试将当前数据帧与以前的数据帧连接时


编辑 2:


将参数作为列表传递


df_final = pd.concat([df_final, df])

仍然相同的错误


缥缈止盈
浏览 82回答 2
2回答

不负相思意

尝试使用 代替 。。df_final != Nonelen(df_final) == 0另外,在命令中,尝试将参数作为列表传递,即pd.concatdf_final = pd.concat([df_final, df])

海绵宝宝撒

从萨扬的萨格格特len(df_final) == 0我有一个想法,如果我最初将df_final值设置为无或具有相同列的空数据帧,会有所不同吗?原来是的这是新代码def visit_table_links():    links = grab_initial_links()    df_final = pd.DataFrame(columns=['Year', 'Population', 'Municipality'])    for obi in links:        resp = requests.get(obi[1])        tree = html.fromstring(resp.content)        dflist = []        for attr in tree.xpath('//th[contains(normalize-space(text()),  "sometext")]/ancestor::table/tbody/tr'):            population = attr.xpath('normalize-space(string(.//td[2]))')            try:                population = population.replace(',', '')                population = int(population)                year = attr.xpath('normalize-space(string(.//td[1]))')                year = re.findall(r'\d+', year)                year = ''.join(year)                year = int(year)                dflist.append([year, population, obi[0]])            except Exception as e:                pass        df = pd.DataFrame(dflist, columns = ['Year', 'Population', 'Municipality'])        df_final = pd.concat([df_final, df])visit_table_links()由于某种原因,设置使熊猫抛出该错误,即使在第一次迭代中我分配的时间为无df_final = Nonedf_final = dfdf_final因此,在下一次迭代中,最初是什么应该无关紧要df_final出于某种原因,它确实很重要所以这行而不是这个解决了这个问题。df_final = pd.DataFrame(columns=['Year', 'Population', 'Municipality'])df_final = None这是合并的数据帧    Year Population   Municipality0   1970      10193     Cape Coral1   1980      32103     Cape Coral2   1990      74991     Cape Coral3   2000     102286     Cape Coral4   2010     154305     Cape Coral5   2018     189343     Cape Coral0   1900        383     Clearwater1   1910       1171     Clearwater2   1920       2427     Clearwater3   1930       7607     Clearwater4   1940      10136     Clearwater5   1950      15581     Clearwater6   1960      34653     Clearwater7   1970      52074     Clearwater8   1980      85170     Clearwater9   1990      98669     Clearwater10  2000     108787     Clearwater11  2010     107685     Clearwater12  2018     116478     Clearwater0   1970       1489  Coral Springs1   1980      37349  Coral Springs2   1990      79443  Coral Springs3   2000     117549  Coral Springs4   2010     121096  Coral Springs5   2018     133507  Coral Springs
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python