被弃用的Pandas.Panel有什么替代品?

3

未来警告:Panel已被弃用,将在未来版本中删除。 代表这种三维数据类型的推荐方法是使用DataFrame上的MultiIndex,通过Panel.to_frame()方法。

每当我运行以下代码时都会出现上述错误! difference = pd.Panel(dict(df1=df1,df2=df2)) 请问有人能告诉我如何替代使用Panel与以上代码行吗?

编辑-1:

def report_diff(x):
   return x[0] if x[0] == x[1] else '{} ---> {}'.format(*x)

difference = pd.Panel(dict(df1=df1,df2=df2))
res = difference.apply(report_diff, axis=0)

这里的df1和df2都包含分类和数值数据。在这里比较两个数据框,以获取它们之间的差异。


你能提供一些样例输入和输出吗?请参考:创建一个[mcve]。 - G. Anderson
1
@G.Anderson,我已经提供了我的程序示例代码。您能否请为我提供panel的替代方案? - DEEPAK K M
请注意,那不是错误,那是一个警告 - juanpa.arrivillaga
1个回答

5

文档中所述,Pandas Panel 的推荐替代方法是使用多级索引或 xarray 库。

对于您特定的用例,以下有些许瑕疵的代码可以得到相同的结果:

a = df1.values.reshape(df1.shape[0] * df1.shape[1])
b = df2.values.reshape(df2.shape[0] * df2.shape[1])
res = np.array([v if v == b[idx] else str(v) + '--->' + str(b[idx]) for idx, v in enumerate(a)]).reshape(
    df1.shape[0], df1.shape[1])
res = pd.DataFrame(res, columns=df1.columns)

1
我尝试过了,但不知道我缺了什么。但你能否请演示如何使用xarray来替换panel.!!上面的代码? - DEEPAK K M
如果您能提供一个更长的例子,我很乐意帮助您。 - Josh Friedlander
1
我在我的编辑中提供了一个片段。你能提供在面板的位置上可以使用什么吗? - DEEPAK K M
我已经提供了一些答案。希望能有所帮助。 - Josh Friedlander
感谢@Josh Friedlander。 - DEEPAK K M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接