2012-10-11 79 views
28

estoy usando trama de datos pandas pitón, tengo una trama de datos inicial decir D. extraigo dos tramas de datos de esta manera:cómo combinar dos tramas de datos en pandas pitón

A = D[D.label == k]

B = D[D.label != k]

entonces cambiar la etiqueta en a y B:

A.label = 1 

B.label = -1

Quiero combinar A y B, así que puedo tenerlos como un solo marco de datos, algo así como la unión. El orden de los datos no es importante, sin embargo, cuando la muestra A y B de D conservan sus índices de D.

Respuesta

51

Creo que se puede utilizar el método de append

bigdata = data1.append(data2, ignore_index=True) 

para mantener sus índices simplemente no uso la palabra clave ignore_index ...

+1

Esto funciona. Sin embargo, crea un nuevo DataFrame. ¿Hay alguna manera de hacerlo en línea? Eso sería bueno para cuando estoy cargando grandes cantidades de datos de una base de datos en lotes para poder actualizar iterativamente el DataFrame sin crear una copia cada vez. – Andrew

+0

Sí, eso es posible, ver: https://stackoverflow.com/a/46661368/5717580 –

31

también puede utilizar pd.concat, que es particularmente útil cuando se está uniendo a más de dos tramas de datos:

bigdata = pd.concat([data1, data2], ignore_index=True) 
9

Pensamos agregar esto aquí en caso de que alguien lo encuentre útil. @ostrokach ya se ha mencionado cómo se pueden combinar las tramas de datos a través de filas que es

df_row_merged = pd.concat([df_a, df_b], ignore_index=True) 

Para combinar través de las columnas, se puede utilizar la siguiente sintaxis:

df_col_merged =pd.concat([df_a, df_b], axis=1) 
1

Hay otra solución para el caso de que usted está trabajando con Big Data y necesidad de concatenar múltiples conjuntos de datos. concat puede obtener rendimiento intensiva, por lo que si usted no desea crear una nueva df cada vez, en lugar puede utilizar una lista por comprensión :

frames = [ process_file(f) for f in dataset_files ] 
result = pd.append(frames) 

(como se ha señalado here in the docs en la parte inferior de la sección):

Nota: vale la pena señalar sin embargo, que concat (y por lo tanto append) hace una copia completa de los datos, y que constantemente la reutilización de este func ion puede crear un golpe de rendimiento significativo. Si necesita utilizar la operación en varios conjuntos de datos, use una lista de comprensión.