two strings name concatenate columns column python pandas append concat

strings - python dataframe concat columns



pandas concat ignore_index no funciona (4)

De acuerdo con los comentarios, siempre es mejor publicar la salida esperada.

¿Es esto lo que estás buscando?

df1 = pd.DataFrame({''A'': [''A0'', ''A1'', ''A2'', ''A3''], ''B'': [''B0'', ''B1'', ''B2'', ''B3''], ''D'': [''D0'', ''D1'', ''D2'', ''D3'']}, index=[0, 2, 3,4]) df2 = pd.DataFrame({''A1'': [''A4'', ''A5'', ''A6'', ''A7''], ''C'': [''C4'', ''C5'', ''C6'', ''C7''], ''D2'': [''D4'', ''D5'', ''D6'', ''D7'']}, index=[ 5, 6, 7,3]) df1 = df1.transpose().reset_index(drop=True).transpose() df2 = df2.transpose().reset_index(drop=True).transpose() dfs = [df1,df2] df = pd.concat( dfs,axis=0,ignore_index=True) print df 0 1 2 0 A0 B0 D0 1 A1 B1 D1 2 A2 B2 D2 3 A3 B3 D3 4 A4 C4 D4 5 A5 C5 D5 6 A6 C6 D6 7 A7 C7 D7

Estoy intentando unir los marcos de datos de la columna y tengo problemas con concat pandas, ya que ignore_index=True no parece funcionar:

df1 = pd.DataFrame({''A'': [''A0'', ''A1'', ''A2'', ''A3''], ''B'': [''B0'', ''B1'', ''B2'', ''B3''], ''D'': [''D0'', ''D1'', ''D2'', ''D3'']}, index=[0, 2, 3,4]) df2 = pd.DataFrame({''A1'': [''A4'', ''A5'', ''A6'', ''A7''], ''C'': [''C4'', ''C5'', ''C6'', ''C7''], ''D2'': [''D4'', ''D5'', ''D6'', ''D7'']}, index=[ 5, 6, 7,3]) df1 # A B D # 0 A0 B0 D0 # 2 A1 B1 D1 # 3 A2 B2 D2 # 4 A3 B3 D3 df2 # A1 C D2 # 5 A4 C4 D4 # 6 A5 C5 D5 # 7 A6 C6 D6 # 3 A7 C7 D7 dfs = [df1,df2] df = pd.concat( dfs,axis=1,ignore_index=True) print df

y el resultado es

0 1 2 3 4 5 0 A0 B0 D0 NaN NaN NaN 2 A1 B1 D1 NaN NaN NaN 3 A2 B2 D2 A7 C7 D7 4 A3 B3 D3 NaN NaN NaN 5 NaN NaN NaN A4 C4 D4 6 NaN NaN NaN A5 C5 D5 7 NaN NaN NaN A6 C6 D6

Incluso si reinicio el índice usando

df1.reset_index() df2.reset_index()

y luego intenta

pd.concat([df1,df2],axis=1)

¡Todavía produce el mismo resultado!


Gracias por preguntar. Tuve el mismo problema. Por alguna razón, "ignore_index = True" no ayuda en mi caso. Quería mantener el índice del primer conjunto de datos e ignorar el segundo índice que me funcionó.

X_train=pd.concat([train_sp, X_train.reset_index(drop=True, inplace=True)], axis=1)


La opción ignore_index está funcionando en su ejemplo, solo necesita saber que está ignorando el eje de concatenación que en su caso son las columnas. (Quizás un nombre mejor sería ignore_labels). Si desea que la concatenación ignore las etiquetas de índice, entonces su variable de eje debe establecerse en 0 (el valor predeterminado).


Si te entendiera correctamente, esto es lo que te gustaría hacer.

import pandas as pd df1 = pd.DataFrame({''A'': [''A0'', ''A1'', ''A2'', ''A3''], ''B'': [''B0'', ''B1'', ''B2'', ''B3''], ''D'': [''D0'', ''D1'', ''D2'', ''D3'']}, index=[0, 2, 3,4]) df2 = pd.DataFrame({''A1'': [''A4'', ''A5'', ''A6'', ''A7''], ''C'': [''C4'', ''C5'', ''C6'', ''C7''], ''D2'': [''D4'', ''D5'', ''D6'', ''D7'']}, index=[ 4, 5, 6 ,7]) df1.reset_index(drop=True, inplace=True) df2.reset_index(drop=True, inplace=True) df = pd.concat( [df1, df2], axis=1)

Lo que da:

A B D A1 C D2 0 A0 B0 D0 A4 C4 D4 1 A1 B1 D1 A5 C5 D5 2 A2 B2 D2 A6 C6 D6 3 A3 B3 D3 A7 C7 D7

En realidad, habría esperado que df = pd.concat(dfs,axis=1,ignore_index=True) dé el mismo resultado.

Esta es la excelente explicación de jreback :

ignore_index=True ''ignora'', lo que significa que no se alinea en el eje de unión. simplemente los pega juntos en el orden en que se pasan, luego reasigna un rango para el índice real (por ejemplo, range(len(index)) ), por lo que la diferencia entre la unión en índices no superpuestos (suponga axis=1 en el ejemplo) , es que con ignore_index=False (el valor predeterminado), obtienes la concat de los índices, y con ignore_index=True obtienes un rango.