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

为何Pandas的.reindex()方法在索引长度相同时丢失数据?

问题原因及解决方法

为什么会出现NaN?

你用df.reindex(columns=ind)时,原DataFrame的列是MultiIndex(每个列名是('foo', Timestamp('2020-02-01'))这类元组),而你生成的ind是普通字符串(比如'foo_2020_02')。reindex的逻辑是在原索引里寻找和新索引完全匹配的项,找不到就填充NaN。这两种列名类型完全不重合,所以所有列都匹配失败,结果全是NaN。

正确的扁平化列层级方法

不需要用reindex,直接把生成的ind赋值给df.columns即可:

df.columns = ind

这样就能直接替换原有的MultiIndex列,完整保留所有数据。

另外,也可以用更简洁的方式生成扁平化列名,无需手动遍历:

df.columns = df.columns.map(lambda x: f"{x[0]}_{x[1].strftime('%Y_%m')}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:02:01