我有一个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
这是我的逻辑,但不起作用。我怎样才能解决这个问题?谢谢。
答案 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(即第一行)