2015-05-27 6 views
3

У меня есть объект pandas Series с каждым значением, равным DataFrame. Я пытаюсь преобразовать это в один DataFrame со всеми значениями Series (индивидуальный DataFrame), уложенными друг на друга. Как я могу достичь этого без цикла?pandas: Преобразование серии DataFrames в единый DataFrame

Приведенный ниже пример игрушки для создания тестового объекта (results).

import pandas as pd 
import numpy as np 
numrows = 10000 

def toy_function(x): 
    silly_sequence = np.random.uniform(10, 100, (x+1)) 
    toy = pd.DataFrame({'ID':pd.Series(np.random.random_integers(1,20,3)),'VALUE':pd.Series((np.median(silly_sequence),np.mean(silly_sequence), np.max(silly_sequence)))}) 

    return toy 

results = pd.DataFrame({'ID':range(numrows)})['ID'].apply(toy_function) 

results имеет Series типа и каждый элемент является DataFrame так:

In [1]: results[1] 
Out[1]: 
    ID  VALUE 
0 17 40.035398 
1 8 40.035398 
2 20 66.483083 

Я ищу способ укладывать results[1], results[2] и т.д. друг на друга с получением DataFrame например:

ID  VALUE 
0 17 40.035398 
1 8 40.035398 
2 20 66.483083 
4 12 25.035398 
5 1 25.135398 
6 19 65.553083 
... 

ответ

5

Попробуйте использовать pd.concat. По крайней мере, должно работать pd.concat(series.values.tolist()).

Его по умолчанию - взять список данных или серий данных панд и вернуть их в конец. http://pandas.pydata.org/pandas-docs/stable/merging.html

+1

Параметр '.values' не требуется. Вы можете просто передать 'series.tolist()' – joris

6

результаты Соединить и игнорировать ваш индекс, делая так:

df_stacked = pd.concat([r for r in results], ignore_index=True) 
Смежные вопросы