数据框更改大小和转换为面板python

时间:2016-05-25 22:04:25

标签: python pandas dataframe panel reshape

我有一个关于如何在改变数据框尺寸的同时将数据框更改为面板的问题。 最初我有一个2000行和784个colmuns的数据框:

data=pd.DataFrame(np.random.randn(2000,784))
data.shape
(2000, 784)

我想将每列转换为28 * 28数据帧,然后将其存储到类似于结构的面板中,其大小为(2000,28,28)或2000 28 28个数据帧。 看一些answers,我试过了:

data_panel=pd.Panel(dict([ (i,data) for i in range(2000)]))
data_panel
<class 'pandas.core.panel.Panel'>
Dimensions: 2000 (items) x 2000 (major_axis) x 784 (minor_axis)
Items axis: 0 to 1999
Major_axis axis: 0 to 1999
Minor_axis axis: 0 to 783

但这不是我想要的。项目轴是正确的,但我希望长轴和短轴为28乘28。

1 个答案:

答案 0 :(得分:1)

似乎有什么问题?这有效:

import pandas as pd
import numpy as np

data = pd.DataFrame(np.random.randn(2000,784))

panel = pd.Panel(data.values.reshape(2000, 28, 28))

# In [49]: q.panel[42].shape
# Out[49]: (28, 28)

# In [51]: q.panel
# Out[51]:
# <class 'pandas.core.panel.Panel'>
# Dimensions: 2000 (items) x 28 (major_axis) x 28 (minor_axis)
# Items axis: 0 to 1999
# Major_axis axis: 0 to 27
# Minor_axis axis: 0 to 27