Каков самый быстрый способ сборки DataFrame по частям?

Я загружаю данные о ценах от bloomberg и хочу построить DataFrame самым быстрым и наименее запоминающимся способом. Предположим, я передаю запрос данных на bloomberg через python для данных о ценах для всех текущих акций S & P 500 с 1-1-2000 до 1-1-2013. Данные возвращаются тикером, а затем дата и значение, по одному за раз. Мой текущий метод заключается в создании списка для дат, которые будут храниться, и другого списка для цен, которые будут храниться, и добавления даты и цены в каждый список, поскольку они считываются из запроса запроса данных Bloomberg. Затем, когда все даты и цены считываются для конкретного тикера, я создаю DataFrame для тикера, используя

ticker_df = pd.DataFrame(price_list, index = dates_list, columns= [ticker], dtype=float) 

Я делаю это для каждого тикера, добавляя каждый кадр данных тикера к списку << df_list.append (ticker_df) >> после считывания данных каждого тикера. Когда все кадры данных тикера сделаны, я объединяю все отдельные DataFrames в один DataFrame:

 lg_index = [] for num in range(len(df_list)): if len(lg_index) < len(df_list[num].index): lg_index = df_list[num].index # Use the largest index for creating the result_df result_df = pd.DataFrame(index= lg_index) for num in range(len(df_list)): result_df[df_list[num].columns[0]] = df_list[num] 

Причина, по которой я делаю это так, заключается в том, что индексы для каждого тикера не идентичны (если в прошлом году акции были только IPO и т. Д.),

Я предполагаю, что должен быть лучший способ выполнить то, что я здесь делаю, используя меньше памяти и более быстрым способом, я просто не могу думать об этом. Благодаря!

Я не уверен на 100%, что вам нужно, но вы можете составить список DataFrames:

 pd.concat(df_list) 

Например:

 In [11]: df = pd.DataFrame([[1, 2], [3, 4]]) In [12]: pd.concat([df, df, df]) Out[12]: 0 1 0 1 2 1 3 4 0 1 2 1 3 4 0 1 2 1 3 4 In [13]: pd.concat([df, df, df], axis=1) Out[13]: 0 1 0 1 0 1 0 1 2 1 2 1 2 1 3 4 3 4 3 4 

или выполнить внешнее объединение / join:

 In [14]: df1 = pd.DataFrame([[1, 2]], columns=[0, 2]) In [15]: df.merge(df1, how='outer') # do several of these Out[15]: 0 1 2 0 1 2 2 1 3 4 NaN 

См. Раздел слияния, присоединения, конкатенации документов .