You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中两个股票价格DataFrame相除部分位置返回NaN原因求解

除法结果出现NaN的常见原因

  • 交易日索引未对齐
    不同标的的交易日存在差异:比如某只股票当日停牌、上市时间晚于你设置的start_date、所属市场节假日不同等,都会导致两个DataFrame的日期索引不完全重合。Pandas做元素级运算时默认按索引对齐,仅两边都存在的索引位置会返回计算结果,仅单边存在的索引位置默认填充NaN。
  • 单标的本身存在空值字段
    即使日期完全对齐,yfinance数据源本身可能存在部分字段(开盘价/收盘价/成交量等)缺失的情况,若运算的两个位置任意一边是空值,除法结果也会返回NaN。
  • 维度不匹配导致的对齐异常
    你对data2调用了squeeze()方法,若data2因为数据缺失、拉取异常等原因降维为Series后,和多列结构的data1做运算时,若列名、索引匹配规则不符合预期,也会产生大量空值。

排查与修复方案

你可以先执行以下代码确认空值来源:

# 查看两个DataFrame的索引长度差
print(len(data1.index), len(data2.index))
# 查看两个DataFrame各自的空值数量
print(data1.isnull().sum())
print(data2.isnull().sum())

确认是索引不对齐导致的问题后,可以先取交集对齐索引再运算:

# 取两个DataFrame共同的交易日
common_idx = data1.index.intersection(data2.index)
data = data1.loc[common_idx] / data2.loc[common_idx]

内容的提问来源于stack exchange,提问作者shade1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:09:00