Подтвердить что ты не робот

Объединить список пандам данных фреймов вместе

У меня есть список фреймов Pandas, которые я хотел бы объединить в один фреймворк Pandas. Я использую Python 2.7.10 и Pandas 0.16.2

Я создал список фреймов данных из:

import pandas as pd
dfs = []
sqlall = "select * from mytable"

for chunk in pd.read_sql_query(sqlall , cnxn, chunksize=10000):
    dfs.append(chunk)

Возвращает список фреймов данных

type(dfs[0])
Out[6]: pandas.core.frame.DataFrame

type(dfs)
Out[7]: list

len(dfs)
Out[8]: 408

Вот несколько примеров данных

# sample dataframes
d1 = pd.DataFrame({'one' : [1., 2., 3., 4.], 'two' : [4., 3., 2., 1.]})
d2 = pd.DataFrame({'one' : [5., 6., 7., 8.], 'two' : [9., 10., 11., 12.]})
d3 = pd.DataFrame({'one' : [15., 16., 17., 18.], 'two' : [19., 10., 11., 12.]})

# list of dataframes
mydfs = [d1, d2, d3]

Я хотел бы объединить d1, d2 и d3 в один фреймворк Pandas. В качестве альтернативы, метод чтения таблиц большого размера непосредственно в кадре данных при использовании опции chunksize был бы очень полезен.

4b9b3361

Ответ 1

Учитывая, что все данные имеют одинаковые столбцы, вы можете просто concat их:

import pandas as pd
df = pd.concat(list_of_dataframes)

Ответ 2

Если кадры данных НЕ имеют одинаковые столбцы, попробуйте следующее:

df = pd.DataFrame.from_dict(map(dict,df_list))

Ответ 3

Вы также можете сделать это с помощью функционального программирования:

reduce(lambda df1, df2: df1.merge(df2, "outer"), mydfs)