当前,我的数据帧正在打印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
答案 0 :(得分: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)