如何使用Python yfinance库获取股票最新收盘价并输出为float类型
解决方案
报错的根本原因是yf.download返回的是包含多列、多行时间序列数据的DataFrame对象,无法直接强制转换为float类型。针对你提出的两个核心问题,处理方案如下:
核心逻辑
- 提取最新收盘价:
yf.download返回的DataFrame行按时间升序排列,最新数据存储在最后一行,只需提取Close列的最后一个值即可 - 转换为float类型:从DataFrame中提取出的单个收盘价本身为numpy数值类型,直接用
float()包裹即可完成类型转换
修正后可运行代码
import yfinance as yf from datetime import datetime, timedelta import pandas as pd pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) pd.set_option('display.width', None) pd.set_option('display.max_colwidth', None) ticker = "tsla" start = datetime.now() - timedelta(days=2) end = datetime.now() price_df = yf.download(ticker, start=start, end=end, interval="1m") # 提前判断数据是否为空,避免无数据时索引报错 if not price_df.empty: # 提取最后一行收盘价,转换为float类型 latest_close = float(price_df['Close'].iloc[-1]) print(latest_close) # 可打印类型确认输出为float # print(type(latest_close)) else: print("未获取到对应时间段的股票数据")
关键修改说明
- 用
price_df['Close']提取所有收盘价格的单列序列 - 用
iloc[-1]取序列的最后一个元素,对应最新时间的收盘价 - 增加空DataFrame校验逻辑,覆盖节假日、交易未开盘等无数据的异常场景
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

