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

多列DataFrame除以同索引单列DataFrame出现全NaN错误,求解决

解决DataFrame相除全NaN的问题

问题原因

pandas里DataFrame的算术运算会同时按索引和列名对齐。你的x_axis只有列I,而y_axis的列是A、B,两者列名完全不匹配,导致每一项运算都找不到对应值,结果全为NaN。

解决方案

核心是让运算按索引对齐(而非列名),把x_axis的单列数据转换成能广播到y_axis所有列的形式,有两种简单方法:

方法1:将x_axis转为Series

因为x_axis只有一列,直接提取列转为Series,运算时会自动按索引广播到y_axis的每一列:

import pandas as pd

x_axis = pd.DataFrame({'I': [1, -3, 4],},
                  index=['2021-01-01', '2021-01-02', '2021-01-03'])

y_axis = pd.DataFrame({'A': [6, 2, -7],
                   'B': [-5, 3, 2]},
                  index=['2021-01-01', '2021-01-02', '2021-01-03'])

# 提取单列转为Series
x_series = x_axis['I']
z_axis = y_axis / x_series
# 调整日期格式为你期望的样式
z_axis.index = z_axis.index.strftime('%d/%m/%Y')
print(z_axis)

输出结果:

A    B
01/01/2021  6.000 -5.0
02/01/2021 -0.667 -1.0
03/01/2021 -1.750  0.5

方法2:使用div方法指定对齐轴

用DataFrame的div方法,明确指定按行(axis=0)对齐,传入x_axis的列数据:

z_axis = y_axis.div(x_axis['I'], axis=0)
z_axis.index = z_axis.index.strftime('%d/%m/%Y')
print(z_axis)

得到的结果和方法1完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:47:30