如何合并在密钥上的while循环中生成的数据帧

时间:2018-11-14 03:41:22

标签: python dataframe while-loop merge

我有一个while循环,并且每次迭代都会生成一个数据帧。 我想在每次迭代后合并一个键上的数据框(比方说,列id):

 while i < 600:
        try:
            player_html = urlopen("https://fantasy.premierleague.com/drf/element-summary/" + str(i))
            player_raw = json.load(player_html)
            fixture = player_raw['fixtures']
            data_df = pd.DataFrame(fixture)
            new_column = data_df.columns
            new_df = pd.DataFrame(columns=new_column)
            new_df = new_df.merge(data_df, on='id')

        except:
            #Write all of the numbers for which there was errors to a file
            errfile = open(player_error, "a")
            errfile.write(str(i) + "\n")
            pass

        print (i)
        i += 1
    return new_df 

这是我的逻辑,但不起作用。我怎样才能解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:0)

我的猜测是data_df应该是df的初始批次,随后必须附加任何new_df

但是,由于它在while循环内内部,因此一直在重置。 话虽如此,在循环之前分配data_df应该可以完成这项工作。

 data = pandas.read_excel(*******)
 data_df = pd.DataFrame(data)

 while i < 600:
    try:
        new_column = data_df.columns
        new_df = pd.DataFrame(columns=new_column)
        new_df = new_df.merge(data_df, on='id')

    except:
        #Write all of the numbers for which there was errors to a file
        errfile = open(player_error, "a")
        errfile.write(str(i) + "\n")
        pass

    print (i)
    i += 1

此外

  • pandas.read_excel返回DataFrame,因此第二行可能是多余的。
  • 不确定pandas的导入方式,但是如果是import pandas as pd,请仅使用pd(即第一行)