我有一个使用pandas面板生成多索引pandas数据帧的包。但是,每当我使用pandas.Panel时,我都会得到以下DeprecationError:
弃用警告:
面板已弃用,将在将来的版本中删除。
建议通过Panel.to_frame()方法在数据帧上使用多索引来表示这些类型的三维数据。
或者,您可以使用xarray包http://xarray.pydata.org/en/stable/.
Pandas提供了一个.to_xarray()方法来帮助自动完成此转换
然而,我不明白这里的第一条建议是什么,以便创建多索引数据帧。如果要移除面板,我将如何使用Panel.to_frame
澄清一下:我不是在问什么是弃用,或者如何将面板转换为数据帧。我想问的是,如果我在库中使用pandas.Panel和pandas.Panel.to_frame从3D Ndarray创建多索引数据帧,并且面板将被弃用,那么在不使用Panel API的情况下创建这些数据帧的最佳选项是什么
例如,如果我在做下面的事情,用X作为一个有形状(N,J,K)的数组:
面板(X,项目=项目名称,长轴=名称0,短轴=名称1)
df=p.至_框架()
这显然不再是数据帧构造的一个可行的、经得起未来考验的选项,尽管它是这个问题中的推荐方法
考虑以下小组:
data=np.random.randint(1,10,(5,3,2))
pnl=局部放电面板(
数据
items=['item{}'。(1,6)]范围内i的格式(i),
长轴=[2015、2016、2017],
短轴=['US','UK']
)
如果将其转换为数据帧,则会变成:
项目1项目2项目3项目4项目5
大调小调
2015年美国9 6 3 2 5
英国83779
2016年美国7 7 8 7 5
英国91991
2017年美国1 8 1 3 1
英国68816
因此,它将长轴和短轴作为行多索引,将项作为列。形状变成了(6,5),原来是(5,3,2)。在何处使用多重索引取决于您,但如果您想要完全相同的形状,可以执行以下操作:
数据=数据。重塑(5,6).T
df=pd.DataFrame(
数据=数据,
指数=来自于_产品的pd.多重指数([[2015,2016,2017],“美国”,“英国”]]),
columns=['item{}'。范围(1,6)中i的格式(i)]
)
这将产生相同的数据帧(如果要命名索引,请使用pd.MultiIndex.from_product的names参数):
项目1项目2项目3项目4项目5
2015年美国9 6 3 2 5
英国83779
2016年美国7 7 8 7 5
英国91991
2017年美国1 8 1 3 1
英国68816
现在不再使用pnl['item1'],而是使用df['item1'](可选df['item1'].unstack());您使用的不是pnl.xs(2015)而是df.xs(2015),而不是pnl.xs('US',axis='minor'),您使用的是df.xs('US',level=1)
如您所见,这只是将最初的3D numpy阵列重塑为2D的问题。在多重索引的帮助下添加其他(人工)维度