2016-05-25 3 views
0

У меня вопрос о том, как сменить данные на панель, изменяя размеры кадра данных. Изначально у меня фрейм данных с 2000 строк и 784 colmuns:размер данных для изменения размера и преобразование в панель python

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

Я хотел бы, чтобы включить каждый столбец в 28 * 28 dataframe, а затем сохранить это в панели, как структура с размером (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

Что, по-видимому, проблема? Эта работа:

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