python - 一旦所有页面都被循环并且值附加到我的列表中,我如何将抓取的值存储到数据框中?
问题描述
目前,我的数据框正在打印出 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
解决方案
如果你想成为一个包含所有值的数据框,那么你应该有一个全局变量,因为它不会重新初始化,除非你重新启动脚本。如果您通过 传递值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)
推荐阅读
- javascript - javascript,json值计数?
- reactjs - 结合 React useContext 和一次性数据加载(React hooks)的最佳实践?
- php - 如何在 Silverstripe 4 中设置和锁定 SiteTree?
- java - 使用单选组和按钮的计算器应用程序
- java - 为什么在某些情况下我们必须将 Immutable 转换为 Pair?
- node.js - 在 MongoDB 中存储 Amazon SNS 的令牌
- python - 如何使用此时间序列数据进行作物预测?
- javascript - addEventListener("change" ... 用于改变 innerHTML 的输入工程的值上升但不下降
- powerbi - 如何设置 Power BI 许可证
- javascript - 访问复杂 javascript 对象的元素