web-dev-qa-db-fra.com

ajouter deux trames de données avec pandas

Quand j'essaye de fusionner deux dataframes par des lignes faisant:

bigdata = data1.append(data2)

J'obtiens l'erreur suivante:

Exception: Index cannot contain duplicate values!

L'index de la première trame de données commence de 0 à 38 et le second de 0 à 48. Je n'ai pas compris que je devais modifier l'index de l'une des trames de données avant de fusionner, mais je ne sais pas comment .

Je vous remercie.

Ce sont les deux trames de données:

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 première colonne est l'index

28
Jean-Pat

La fonction append a un argument facultatif ignore_index que vous devez utiliser ici pour joindre les enregistrements, car l'index n'est pas significatif pour votre application.

44
Wes McKinney

Vous pouvez d'abord identifier la ligne dupliquée par l'index (pas la valeur) à l'aide de la méthode groupby, puis effectuer une opération somme/moyenne sur toutes les lignes avec l'index en double.

data1 = data1.groupby(data1.index).sum()
data2 = data2.groupby(data2.index).sum()
1
Madcat