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

Pandas DataFrame每行值除以行和计算权重时出现NaN问题

问题原因

  • 核心是Pandas的默认广播对齐规则导致的:你对DataFrame执行sum(axis=1)得到的是行索引对齐的一维Series,直接用/运算符做除法时,Pandas会默认将Series的索引与DataFrame的列名做匹配,你的列名是btc、eth,和行索引(日期)完全匹配不上,所以所有位置都会填充为NaN。
  • 次要问题是存在行求和结果为0的情况(如示例中2021/08/27行),直接除以0会得到inf无穷值,不符合你预期输出0的要求。

解决方法

调用Pandas的div方法,显式指定按行维度(axis=0)对齐做除法,同时提前处理行和为0的边界情况,示例代码如下:

# 先计算每行求和结果
row_sum = trading_signals.sum(axis=1)
# 将行和为0的替换为1,避免除以0的问题,保证0/1仍为0
row_sum = row_sum.replace(0, 1)
# 按行对齐做除法
positions = trading_signals.div(row_sum, axis=0)

运行上述代码后得到的结果和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:51:01