如何打印akshare获取的A股行情表中指定的「名称」和「最新价」列?
问题描述
执行以下代码获取A股实时行情:
import akshare as ak # 获取A股实时行情数据 stock_prices = ak.stock_zh_a_spot() print(stock_prices)
得到的结果格式示例如下:
代码 名称 最新价 涨跌额 涨跌幅 买入 卖出 昨收 今开 最高 \ 0 bj430017 星昊医药 9.96 -0.11 -1.092 9.96 9.97 10.07 10.08 10.10 1 bj430047 诺思兰德 15.20 0.22 1.469 15.20 15.21 14.98 15.46 16.16 2 bj430090 同辉信息 2.65 0.01 0.379 2.64 2.65 2.64 2.68 2.68 3 bj430139 华岭股份 10.82 0.31 2.950 10.76 10.82 10.51 10.48
想要打印其中「名称」和「最新价」两列,尝试了以下代码但无法正常运行:
for code, price in stock_prices.items(): print(f"股票代码:{code},最新价格:{price['最新价']}")
正确实现方法
错误原因
ak.stock_zh_a_spot()返回的是Pandas DataFrame对象,而非字典,因此不能使用字典的.items()方法遍历。需要用DataFrame专属的遍历方式。
方法1:使用iterrows()逐行遍历
import akshare as ak stock_prices = ak.stock_zh_a_spot() # iterrows()返回每行的索引和行数据(Series对象) for _, row in stock_prices.iterrows(): print(f"股票名称:{row['名称']},最新价格:{row['最新价']}")
方法2:先提取目标列再遍历
如果只需要「名称」和「最新价」,可以先筛选出这两列再处理,效率更高:
import akshare as ak stock_prices = ak.stock_zh_a_spot() # 提取指定列 target_cols = stock_prices[['名称', '最新价']] for _, row in target_cols.iterrows(): print(f"股票名称:{row['名称']},最新价格:{row['最新价']}")
方法3:用apply()批量处理(简洁写法)
import akshare as ak stock_prices = ak.stock_zh_a_spot() # axis=1表示按行处理,lambda函数接收每行数据并打印 stock_prices[['名称', '最新价']].apply(lambda x: print(f"股票名称:{x['名称']},最新价格:{x['最新价']}"), axis=1)
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

