J'ai une liste de Pandas données que je voudrais combiner en un Pandas données. J'utilise Python 2.7.10 et Pandas 0.16.2
J'ai créé la liste des dataframes à partir de:
import pandas as pd
dfs = []
sqlall = "select * from mytable"
for chunk in pd.read_sql_query(sqlall , cnxn, chunksize=10000):
dfs.append(chunk)
Ceci retourne une liste de dataframes
type(dfs[0])
Out[6]: pandas.core.frame.DataFrame
type(dfs)
Out[7]: list
len(dfs)
Out[8]: 408
Voici quelques exemples de données
# 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]
Je voudrais combiner d1
, d2
et d3
en un pandas dataframe. Sinon, une méthode consistant à lire une table de grande taille directement dans une trame de données lors de l'utilisation de l'option chunksize
serait très utile.
Étant donné que toutes les images ont les mêmes colonnes, vous pouvez simplement concat
les:
import pandas as pd
df = pd.concat(list_of_dataframes)
Si les bases de données N'ONT PAS toutes les mêmes colonnes, essayez ce qui suit:
df = pd.DataFrame.from_dict(map(dict,df_list))
Vous pouvez également le faire avec une programmation fonctionnelle:
reduce(lambda df1, df2: df1.merge(df2, "outer"), mydfs)