Saya memiliki daftar kerangka data Pandas yang ingin saya gabungkan menjadi satu kerangka data Pandas. Saya menggunakan Python 2.7.10 dan Pandas 0.16.2
Saya membuat daftar kerangka data dari:
import pandas as pd
dfs = []
sqlall = "select * from mytable"
for chunk in pd.read_sql_query(sqlall , cnxn, chunksize=10000):
dfs.append(chunk)
Ini mengembalikan daftar kerangka data
type(dfs[0])
Out[6]: pandas.core.frame.DataFrame
type(dfs)
Out[7]: list
len(dfs)
Out[8]: 408
Berikut beberapa contoh data
# 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]
Saya ingin menggabungkan d1
, d2
dan d3
menjadi satu panda dataframe. Alternatifnya, metode membaca tabel large-ish secara langsung ke dalam kerangka data saat menggunakan chunksize
opsi akan sangat membantu.
data.frame
tidak memiliki kolom yang sama makaNaN
akan disisipkan tanpa kesalahan dalam versi barupandas
Jika dataframe TIDAK semuanya memiliki kolom yang sama coba yang berikut ini:
sumber
TypeError: data argument can't be an iterator
. Mengonversi ke yanglist
pertama (untuk meniru Python 2.7) juga menghasilkan hasil yang tidak terduga.Anda juga dapat melakukannya dengan pemrograman fungsional:
sumber
from functools import reduce
untuk digunakanreduce
pd.concat
ataujoin
, keduanya menerima daftar bingkai dan bergabung dalam indeks secara default.concat
juga bekerja dengan baik dengan pemahaman daftar yang ditarik menggunakan perintah "loc" terhadap kerangka data yang adasumber