wake-up-neo.com

Verketten Sie eine Liste von pandas dataframes zusammen

Ich habe eine Liste von Pandas Datenrahmen, die ich zu einem kombinieren möchte Pandas Datenrahmen. Ich verwende Python 2.7 .10 und Pandas 0.16.2

Ich habe die Liste der Datenrahmen erstellt aus:

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

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

Dies gibt eine Liste von Datenrahmen zurück

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

type(dfs)
Out[7]: list

len(dfs)
Out[8]: 408

Hier sind einige Beispieldaten

# 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]

Ich möchte d1, d2 Und d3 Zu einem pandas dataframe) kombinieren Wenn Sie die Option chunksize verwenden, wäre es sehr hilfreich, eine Tabelle direkt in einen Datenrahmen zu kopieren.

89
Whitebeard

Wenn alle Datenrahmen die gleichen Spalten haben, können Sie sie einfach concat:

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

Wenn die Datenrahmen NICHT alle die gleichen Spalten haben, versuchen Sie Folgendes:

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

Sie können es auch mit funktionaler Programmierung tun:

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