我有下面的代码:
import bs4 as bs
import requests
import yfinance as yf
import datetime
import pandas as pd
import time
starttimer = time.time()
resp = requests.get('http://en.wikipedia.org/wiki/List_of_S%26P_500_companies')
soup = bs.BeautifulSoup(resp.text, 'lxml')
table = soup.find('table', {'class': 'wikitable sortable'})
tickers = []
for row in table.findAll('tr')[1:]:
ticker = row.findAll('td')[0].text
tickers.append(ticker)
tickers = [s.replace('\n', '') for s in tickers]
start = datetime.datetime(2020, 1, 1)
end = datetime.datetime(2022, 1, 1)
data = yf.download("GOOGL", start=start, end=end)
print(data)
eodPrices = pd.DataFrame(data=data);
percentageChange = round(eodPrices.pct_change()*100,2).shift(-1)
percentageChange.sort_values(by=['Close'],inplace=True)
dataframe = pd.DataFrame(percentageChange,columns = ['Close'])
print(dataframe)
代码从yfinance模块获取所需股票代码的数据,然后对它们进行排序(升序)。我收到以下响应:
我对这一答复有几个问题:
我在响应中没有看到股票代码,当我尝试下载更多股票代码时,收到以下错误:
数值错误:列标签“Close”不唯一。对于多索引,该标签必须是包含与每个级别对应的元素的元组。
我不知道该怎么补救。
我希望得到的答复如下:
当前日期格式:
我只想有一个日期,例如“2020年3月13日”。它似乎是硬编码,我不能改变它,有办法如何做到这一点?
非常感谢。
2条答案
按热度按时间gk7wooem1#
您可以:
输出:
更新
我只想有一个日期,例如“2020年3月13日”。它似乎是硬编码,我不能改变它,有办法如何做到这一点?
out
Dataframe 实际上不适合此任务:输出:
r6hnlfcb2#
只要使用chatGPT,他知道一切!