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

多索引DataFrame新增returns列赋值后全为NaN问题排查

问题原因及解决方法

问题根源

你用了链式索引(bars.loc[symbol]['close']),这种方式返回的是原DataFrame的副本而非视图。当你给副本赋值pct_change()的结果时,原DataFrame的returns列根本没被修改,最终自然全是NaN。

正确写法

方法1:修正索引方式,直接操作原DataFrame视图

把链式索引改成一次定位目标位置,确保修改的是原DataFrame:

bars.loc[symbol, 'returns'] = bars.loc[symbol, 'close'].pct_change()

核心是将bars.loc[symbol]['close']替换为bars.loc[symbol, 'close'],避免生成副本。

方法2:不用循环,用groupby批量处理(更高效)

多索引场景下,直接按symbol分组计算百分比变化,无需手动循环,代码更简洁且性能更优:

bars['returns'] = bars.groupby(level='symbol')['close'].pct_change()

如果你的多索引第一层不是symbol,把level参数换成对应的索引名称或位置即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:02:01