以下 Dataframe 包含两个空列(销售额和收入),应使用与股票代码列对应的抓取数据更新这两个空列:
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'}
})
使用下面的附加代码,我可以从快照表中提取Sales和Income信息,但只能提取一个股票代码,而且我不知道如何更新 Dataframe :
附加代码
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]}')
预期结果:
| 不,不,不|自动收报机|销售部|收入情况|公司名称|部门|
| - -|- -|- -|- -|- -|- -|
| 一个|AAPL语言| 365.82B | 94.68B |苹果公司|技术|
| 2个|微软技术| 176.25B | 67.88B |微软公司|技术|
| 三个|TSLA| 46.85B | 3.47B |特斯拉公司|消费者周期|
| 四个|反馈| 112.33B | 40.30B | meta平台公司|通信服务|
| 五个|制动器B| 268.68B |- -|伯克希尔海瑟薇公司|财务|
1条答案
按热度按时间q3qa4bjr1#
如何实现?
将附加代码放入def中,并结合使用
zip()
和map()
来更新列:示例
**注:***标记可能会改变(FB -〉 meta),因此,在出现错误时,始终注意所请求的内容 *
输出
| 不,不,不|自动收报机|销售部|收入情况|公司名称|部门|
| - -|- -|- -|- -|- -|- -|
| 一个|AAPL语言| 365.82B | 94.68B |苹果公司|技术|
| 2个|微软技术| 176.25B | 67.88B |微软公司|技术|
| 三个|TSLA| 46.85B | 3.47B |特斯拉公司|消费者周期|
| 四个|反馈| 112.33B | 40.30B | meta平台公司|通信服务|
| 五个|制动器B| 268.68B |- -|伯克希尔海瑟薇公司|财务|