2015-09-07 21 views
30

私は1つのパンダのデータフレームに結合したいと思うパンダのデータフレームのリストを持っています。私はからデータフレームのリストを作成したPythonの2.7.10とパンダ0.16.2パンダのデータフレームのリストを1つのパンダのデータフレームに結合する

を使用しています:これはここではデータフレーム

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

type(dfs) 
Out[7]: list 

len(dfs) 
Out[8]: 408 

のリストは、いくつかのサンプルデータで返し

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

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

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

私はd1d2 、およびd3を1つのパンダデータフレームに変換します。あるいは、chunksizeオプションを使用しているときに、大規模なテーブルを直接データフレームに読み込む方法が非常に役に立ちます。すべてのデータフレームが同じ列を持っていることを、あなたは、単にconcat化でき考える

答えて

57

:データフレームはすべて同じ列を持っていない場合

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

キャスト可能な列がない場合最初にdictを使用してfrom_dictを使用する - – meyerson

+0

列を追加する場合は、軸= 1の引数を追加することを覚えておいてください。 –

+0

'data.frame'に同じ列がない場合でも' NaN'は新しいバージョンの 'pandas'にエラーを投げずに挿入する –

4

は、次のことを試してください。

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

また、関数型プログラミングを使用することができます:

reduce(lambda df1, df2: df1.merge(df2, "outer"), mydfs) 
関連する問題