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

为何两个有效float类型Pandas Series对象相除返回NaN?

问题原因及解决方案

核心原因:Pandas Series的索引对齐机制

你遇到的问题完全是因为Pandas Series运算时会严格按索引对齐,而非简单按元素位置匹配:

  • c_value_1是仅包含索引0的Series,对应值为0.188008
  • c_value_2是仅包含索引1的Series,对应值为0.17636

当执行c_value_1 / c_value_2时,Pandas会遍历两个Series的所有索引:

  • 索引0的位置:c_value_2没有对应值,返回NaN
  • 索引1的位置:c_value_1没有对应值,返回NaN

而.array属性返回的是Series底层的无索引数值集合,运算时直接按元素位置一一对应计算,不需要考虑索引,因此能得到正确结果。

几种解决方案

  1. 提取标量值计算:既然你确定每个查询仅返回一行,直接用.iloc[0]取出标量再运算:
c_value_1.iloc[0] / c_value_2.iloc[0]  # 结果:1.066046723747
  1. 忽略索引对齐:用.array或.values获取底层数值数组运算:
c_value_1.array / c_value_2.array  # 结果:<PandasArray([1.06604672]) dtype: float64>
  1. 统一索引后运算:重置两个Series的索引,让它们的索引一致:
c_value_1.reset_index(drop=True) / c_value_2.reset_index(drop=True)
# 结果:0    1.066047
# dtype: float64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:40:31