首页 > 解决方案 > .pct_change() 在无限循环中从一个空数据帧开始

问题描述

我正在尝试获得 2 列的输出。第一列“收盘价”应该是从网络请求的实际股票价格。我已经得到了这个

第二列“变化”应该是第一列中价格之间的百分比变化。当然总是与上一行比较。

需要改变什么才能得到这个?

from bs4 import BeautifulSoup
import requests
import pandas as pd


def priceTracker():
    url = "https://finance.yahoo.com/quote/AAPL?p=AAPL"
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "lxml")
    price = soup.findAll("div", {"class": "D(ib) Mend(20px)"})[0].find("span").text
    return (price)

results = []
   
i = 1

while i == 1:
    results.append(priceTracker())
    df = pd.DataFrame(results)
    df.columns = ["close"]

    if len(df.index) >5:
            print(df.tail(3))
            #print(df["close"].pct_change()) --> NOT WORKING

标签: pythonpandaslistdataframe

解决方案


您需要将数据类型更改为在关闭列上浮动。

while i == 1:
    results.append(priceTracker())
    df = pd.DataFrame(results)
    df.columns = ["close"]
    df['close'] = df['close'].astype('float')  #<<<<<<<added this

    if len(df.index) >5:
            print(df.tail(3))
            #print(df["close"].pct_change())

推荐阅读