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.
Wenn alle Datenrahmen die gleichen Spalten haben, können Sie sie einfach concat
:
import pandas as pd
df = pd.concat(list_of_dataframes)
Wenn die Datenrahmen NICHT alle die gleichen Spalten haben, versuchen Sie Folgendes:
df = pd.DataFrame.from_dict(map(dict,df_list))
Sie können es auch mit funktionaler Programmierung tun:
reduce(lambda df1, df2: df1.merge(df2, "outer"), mydfs)