我构建的数据框只返回列表中的最后一项。我不确定我做错了什么。
def stockStat():
for heading in doc(".mw-headline:contains('S&P 500 Component Stocks')").parent("h2"):
rows = pq(heading).next("table tr")
for row in rows:
tds = pq(row).find("td")
cik = [tds.eq(7).text()]
ticker = [tds.eq(0).text()]
d = {'CIK': cik, 'TICKER' : ticker}
temps = pd.DataFrame(d)
print(temps)
stockStat()
来自解析数据的列表将传递到数据框中,但数据框只能识别最后一项。
0 0001555280 ZTS
答案 0 :(得分:1)
我发现你在循环的每次迭代中都覆盖了cik
和ticker
。因此,一旦循环完成,你将只有最后一项。
请确保append
改为列表。
答案 1 :(得分:1)
问题是你循环遍历行并将tds
绑定到每行所需的内容,然后for循环结束,tds
对应最后一行。然后,您只需使用cik
和ticker
的一个元素制作列表。
请尝试以下方法:
cik = []
ticker = []
for row in rows:
tds = pq(row).find("td")
cik.append(tds.eq(7).text())
ticker.append(tds.eq(0).text())