2014-09-12 2 views
1

У меня есть данные, что выглядит следующим образом:трансформирующий Панды DataFrame в Список DataFrames

1.00 1.00 1.00 
3.23 4.23 0.33 
1.23 0.13 3.44 
4.55 12.3 14.1 
2.00 2.00 2.00 
1.21 1.11 1.11 
3.55 5.44 5.22 
4.11 1.00 4.00 

Он поставляется в куске 4. Первая строка фрагмента является индексом, а остальные значения. Кусок всегда приходит в 4-х строк, но количество столбцов может быть больше 3.

Например:

1.00 1.00 1.00 <- 1st chunk, the index = 1 

3.23 4.23 0.33 <- values 
1.23 0.13 3.44 <- values 
4.55 12.3 14.1 <- values 

Мой пример выше, содержит только 2 порции, но на самом деле он может содержать больше, чем это.

Что я хочу сделать, так это создать словарь данных, чтобы я мог обрабатывать их. chunk by chunk. А именно от этого:

In [1]: import pandas as pd 

In [2]: df = pd.read_table("http://dpaste.com/29R0BSS.txt",header=None, sep = " ") 

In [3]: df 
Out[3]: 
     0  1  2 
0 1.00 1.00 1.00 
1 3.23 4.23 0.33 
2 1.23 0.13 3.44 
3 4.55 12.30 14.10 
4 2.00 2.00 2.00 
5 1.21 1.11 1.11 
6 3.55 5.44 5.22 
7 4.11 1.00 4.00 

В список кадра данных, так что я могу сделать что-то вроде этого (я делаю это вручную):

>> # Let's call new data frame `nd`. 
>> nd[1] 
>>  0  1  2 
0 3.23 4.23 0.33 
1 1.23 0.13 3.44 
2 4.55 12.30 14.10 

ответ

5

Там много способов сделать это; Я обычно использую groupby, например. что-то вроде

>>> grouped = df.groupby(np.arange(len(df)) // 4) 
>>> d = {v.iloc[0][0]: v.iloc[1:].reset_index(drop=True) for k,v in grouped} 
>>> for k,v in d.items(): 
...  print(k) 
...  print(v) 
...  
1.0 
     0  1  2 
0 3.23 4.23 0.33 
1 1.23 0.13 3.44 
2 4.55 12.30 14.10 
2.0 
     0  1  2 
0 1.21 1.11 1.11 
1 3.55 5.44 5.22 
2 4.11 1.00 4.00 
Смежные вопросы