Eu tenho uma lista de quadros de dados do Pandas que gostaria de combinar em um quadro de dados do Pandas. Estou usando o Python 2.7.10 e o Pandas 0.16.2
Criei a lista de quadros de dados de:
import pandas as pd
dfs = []
sqlall = "select * from mytable"
for chunk in pd.read_sql_query(sqlall , cnxn, chunksize=10000):
dfs.append(chunk)
Isso retorna uma lista de quadros de dados
type(dfs[0])
Out[6]: pandas.core.frame.DataFrame
type(dfs)
Out[7]: list
len(dfs)
Out[8]: 408
Aqui estão alguns dados de amostra
# 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]
Eu gostaria de combinar d1
, d2
e d3
em uma trama de dados de pandas. Como alternativa, um método de leitura de uma tabela ish grande diretamente em um dataframe ao usar a chunksize
opção seria muito útil.
data.frame
não têm mesmas colunas, em seguida,NaN
serão inseridos sem jogar erro na nova versão dopandas
Se os quadros de dados NÃO tiverem as mesmas colunas, tente o seguinte:
fonte
TypeError: data argument can't be an iterator
. A conversão para olist
primeiro (para imitar o Python 2.7) também gera resultados inesperados.Você também pode fazê-lo com programação funcional:
fonte
from functools import reduce
usarreduce
pd.concat
oujoin
, ambos aceitam uma lista de quadros e ingressam no índice por padrão.concat
também funciona bem com uma compreensão de lista obtida usando o comando "loc" em um dataframe existentefonte