使用for循环生成含股票简称与代码的DataFrame报错如何解决
报错根因
- 你初始化的变量
a是Python列表类型,列表仅支持整数下标/切片作为索引,不支持直接用字符串作为键存储键值对,你尝试用a['Short_Name']的字典操作写法访问列表,自然触发类型错误。
可直接运行的修复代码
import yfinance as yf import pandas as pd res_list = [] tic_list = ['FFIV', 'FIS', 'FISV', 'FITB', 'FLS', 'FMC'] for tic in tic_list: stock = yf.Ticker(tic) # 新增异常捕获,避免个别股票无shortName字段导致程序中断 try: short_name = stock.info['shortName'] except KeyError: short_name = None # 每次循环构造单条字典,追加到结果列表 res_list.append({ 'Short_Name': short_name, 'tic': tic }) # 列表转DataFrame result_df = pd.DataFrame(res_list) print(result_df)
代码说明
- 用存储字典的列表接收每一行数据,每个字典对应DataFrame的一行,键对应列名
- 新增异常捕获逻辑,处理部分ticker无法返回
shortName字段的边界情况,保证循环可以正常跑完所有标的
内容的提问来源于stack exchange,提问作者MichaelB
相关产品推荐
相关产品推荐

