DataFrame仅在构造后具有最后一项

时间:2015-05-25 18:55:33

标签: python pandas dataframe

我构建的数据框只返回列表中的最后一项。我不确定我做错了什么。

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

2 个答案:

答案 0 :(得分:1)

我发现你在循环的每次迭代中都覆盖了cikticker。因此,一旦循环完成,你将只有最后一项。

请确保append改为列表。

答案 1 :(得分:1)

问题是你循环遍历行并将tds绑定到每行所需的内容,然后for循环结束,tds对应最后一行。然后,您只需使用cikticker的一个元素制作列表。

请尝试以下方法:

    cik = []
    ticker = []
    for row in rows:
       tds = pq(row).find("td")
       cik.append(tds.eq(7).text())
       ticker.append(tds.eq(0).text())