python join pandas append

python - matplotlib



Anexando dos marcos de datos con las mismas columnas, orden diferente (3)

Para futuros usuarios (en algún momento > pandas 0.23.0 ):

Es posible que también deba agregar sort = True para ordenar el eje de no concatenación cuando aún no esté alineado (es decir, para mantener el comportamiento de concatenación deseado del OP). Utilicé el código contribuido anteriormente y obtuve una advertencia, vea Advertencia de usuario de Python Pandas . El siguiente código funciona y no lanza una advertencia.

In [36]: pd.concat([noclickDF, clickDF], ignore_index=True, sort=True) Out[36]: click id location 0 0 123 321 1 0 1543 432 2 1 421 123 3 1 436 1543

Tengo dos marcos de datos de los pandas.

noclickDF = DataFrame([[0,123,321],[0,1543,432]], columns=[''click'', ''id'',''location'']) clickDF = DataFrame([[1,123,421],[1,1543,436]], columns=[''click'', ''location'',''id''])

Simplemente quiero unirme para que el DF final se vea como:

click | id | location 0 123 321 0 1543 432 1 421 123 1 436 1543

Como puede ver, los nombres de columna de ambos DF originales son los mismos, pero no en el mismo orden. Tampoco hay una unión en una columna.


Puedes usar el apéndice para eso

df = noclickDF.append(clickDF) print df click id location 0 0 123 321 1 0 1543 432 0 1 421 123 1 1 436 1543

y si lo necesitas puedes restablecer el índice

df.reset_index(drop=True) print df click id location 0 0 123 321 1 0 1543 432 2 1 421 123 3 1 436 1543


También pd.concat usar pd.concat :

In [36]: pd.concat([noclickDF, clickDF], ignore_index=True) Out[36]: click id location 0 0 123 321 1 0 1543 432 2 1 421 123 3 1 436 1543

Bajo el capó, DataFrame.append llama a pd.concat . DataFrame.append tiene código para manejar varios tipos de entrada, como series, tuplas, listas y dictados. Si le pasas un DataFrame, pasa directamente a pd.concat , por lo que usar pd.concat es un poco más directo.