以下資料框由兩個空列(銷售額和收入)組成,應使用與股票行情對應的抓取資料進行更新:
df = pd.DataFrame({
'No.': {0: '1', 1: '2', 2: '3', 3: '4', 4: '5'},
'Ticker': {0: 'AAPL', 1: 'MSFT', 2: 'TSLA', 3: 'FB', 4: 'BRK-B'},
'Sales': {0: '', 1: '', 2: '', 3: '', 4: ''},
'Income': {0: '', 1: '', 2: '', 3: '', 4: ''},
'Company': {0: 'Apple Inc.', 1: 'Microsoft Corporation', 2: 'Tesla, Inc.', 3: 'Meta Platforms, Inc.', 4: 'Berkshire Hathaway Inc.'},
'Sector': {0: 'Technology', 1: 'Technology', 2: 'Consumer Cyclical', 3: 'Communication Services', 4: 'Financial'}
})
通過下面的附加代碼,我可以從快照表中提取銷售和收入資訊,但僅限于一個代碼,我不知道如何更新資料框:
附加代碼
ticker = (df.iloc[0,1])
#---------- Pulling the data from chosen stock ticker ----------#
url = ('https://finviz.com/quote.ashx?t=' ticker.upper())
req = requests.get(url,headers=headers)
table = pd.read_html(req.text, attrs = {"class":"snapshot-table2"} )
df = table[0]
print(f'{df[0][3]}: {df[1][3]}: {df[0][2]}: {df[1][2]}')
預期結果:
| 不。 | 股票代碼 | 銷售量 | 收入 | 公司 | 部門 |
|---|---|---|---|---|---|
| 1 | 蘋果 | 365.82B | 94.68B | 蘋果公司。 | 技術 |
| 2 | 微軟 | 176.25B | 67.88B | 微軟公司 | 技術 |
| 3 | 特斯拉 | 46.85B | 3.47B | 特斯拉公司 | 周期性消費 |
| 4 | 臉書 | 112.33B | 40.30B | 元平臺公司 | 通訊服務 |
| 5 | BRK-B | 268.68B | - | 伯克希爾哈撒韋公司 | 金融 |
uj5u.com熱心網友回復:
如何實作?
將您的附加代碼放入 def 并zip()結合使用map()以更新您的列:
df['Sales'],df['Income'] = zip(*df['Ticker'].map(lambda x: get_ticker(x)))
例子
def get_ticker(ticker):
#---------- Pulling the data from chosen stock ticker ----------#
url = ('https://finviz.com/quote.ashx?t=' ticker.upper())
req = requests.get(url,headers=headers)
table = pd.read_html(req.text, attrs = {"class":"snapshot-table2"} )
df = table[0]
return(df[1][3],df[1][2])
df['Sales'],df['Income'] = zip(*df['Ticker'].map(lambda x: get_ticker(x)))
輸出
| 不。 | 股票代碼 | 銷售量 | 收入 | 公司 | 部門 |
|---|---|---|---|---|---|
| 1 | 蘋果 | 365.82B | 94.68B | 蘋果公司。 | 技術 |
| 2 | 微軟 | 176.25B | 67.88B | 微軟公司 | 技術 |
| 3 | 特斯拉 | 46.85B | 3.47B | 特斯拉公司 | 周期性消費 |
| 4 | 臉書 | 112.33B | 40.30B | 元平臺公司 | 通訊服務 |
| 5 | BRK-B | 268.68B | - | 伯克希爾哈撒韋公司 | 金融 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/407890.html
標籤:
