2011-10-15 23 views
25

Cuando trato de combinar dos tramas de datos por filas haciendo:anexar dos tramas de datos con los pandas

bigdata = data1.append(data2) 

me sale el siguiente error:

Exception: Index cannot contain duplicate values! 

El índice de la primera trama de datos comienza desde 0 a 38 y el segundo de 0 a 48. No entendí que tengo que modificar el índice de uno de los marcos de datos antes de la fusión, pero no sé cómo hacerlo.

Gracias.

Estas son las dos tramas de datos:

data1:

meta particle ratio area type  
0 2  part10 1.348 0.8365 touching 
1 2  part18 1.558 0.8244 single 
2 2  part2  1.893 0.894 single 
3 2  part37 0.6695 1.005 single 
....clip... 
36 2  part23 1.051 0.8781 single 
37 2  part3  80.54 0.9714 nuclei 
38 2  part34 1.071 0.9337 single 

data2:

meta particle ratio area type  
0 3  part10 0.4756 1.025 single 
1 3  part18 0.04387 1.232 dusts 
2 3  part2  1.132 0.8927 single 
...clip... 
46 3  part46 13.71 1.001 nuclei 
47 3  part3  0.7439 0.9038 single 
48 3  part34 0.4349 0.9956 single 

la primera columna es el índice

+0

Podría por favor, puesto instantáneas de ambos 'dataframe' objetos (es decir, en el intérprete de Python, escriba el nombre del' dataframe' por lo que los objetos se enumeran en la pantalla). También publique las palabras clave que usó cuando realizó la combinación. Como puede ver en http://pandas.sourceforge.net/dataframe.html, hay algunas maneras de combinar marcos de datos ... asegúrese de estar utilizando el que tenga más sentido para lo que está tratando de lograr –

+0

aquí hay una impresión de los dos dataframes: –

+0

Lo siento, pero todavía no veo los contenidos de 'data1' y' data2' en esta página web ... edítelos en la pregunta original –

Respuesta

40

La función append tiene un argumento opcional ignore_index que debe usar aquí para unir los registros, ya que el índice no es significativo para su aplicación.

+0

Gracias, lo intentaré –

+0

@ Jean-Pat: ¿por qué no aceptar la respuesta? –

1

Primero puede identificar la fila de índice duplicado (no valor) utilizando el método groupby, y luego hacer una operación suma/media en todas las filas con el índice duplicado.

data1 = data1.groupby(data1.index).sum() 
data2 = data2.groupby(data2.index).sum() 
+0

Tuve engaños con panel = panel1.append (panel2). Y luego esto los eliminó: panel = panel.groupby (panel.index) .sum() Entonces thx. (Me dicen que estoy trabajando con paneles, no con marcos de datos, cómo saber) – gseattle

Cuestiones relacionadas