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

Pandas Panel已废弃,求将旧代码适配最新Pandas版本的解决方案

替代已废弃Pandas Panel的兼容写法

你提到的这段依赖pd.Panel的代码确实在新版Pandas里跑不通了——Panel早在0.25版本就被正式移除了,官方推荐了两种替代方案,我帮你分别改写适配:


方案一:使用MultiIndex DataFrame(推荐,贴近Pandas原生操作)

原来的Panel是把多个DataFrame作为items维度(对应axis=0),我们可以把这些DataFrame合并成一个带层次化索引的DataFrame,用groupby来模拟Panel的apply(axis=0)逻辑:

# 将df1和df2合并为带MultiIndex列的DataFrame,外层列名对应原Panel的items
combined_df = pd.concat([df1, df2], axis=1, keys=['df1', 'df2'])

# 按外层列分组,对每个组(即原有的单个DataFrame)应用report_diff
diff_output = combined_df.groupby(level=0, axis=1).apply(report_diff)

如果你的report_diff是按行维度处理数据,也可以把keys放到行索引上:

combined_df = pd.concat([df1, df2], axis=0, keys=['df1', 'df2'])
diff_output = combined_df.groupby(level=0).apply(report_diff)

核心是把原Panel的items维度转换成MultiIndex的一个层级,这样groupby就能精准定位到每个原始DataFrame进行处理,和原代码逻辑完全一致。


方案二:使用xarray(适合多维数据场景)

如果你的数据涉及更复杂的多维操作,官方提到的to_xarray是很好的选择,我们可以直接把DataFrame转成xarray Dataset后操作:

import xarray as xr

# 将两个DataFrame转换为xarray Dataset,每个DataFrame对应一个变量
ds = xr.Dataset({'df1': df1.to_xarray(), 'df2': df2.to_xarray()})

# 沿变量维度(对应原Panel的items)应用report_diff
diff_output = ds.apply(report_diff, dim='variable')

xarray的多维数据模型和原Panel非常接近,能无缝承接原来的多维操作逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:19:59