1
votes

Pandas Concat Ajout de cellules / colonnes nulles

J'ai deux dataframes pandas qui ressemblent à ceci. Les en-têtes sont indicatifs - les dataframes n'ont en fait aucun en-tête (titre).

**Final_Dataframe**
Browser_name          Count
IE                      10
Chrome                  25
Firefox                 15
DDG                     6

Le résultat que je veux est un dataframe avec le nom du navigateur dans la première colonne et la somme de leurs décomptes dans les secondes colonnes comme ci-dessous.

**Dataframe 1**
Browser_name          Count
IE                      4
Chrome                  7
Firefox                 6
DDG                     2

**Dataframe 2**
Browser_name          Count
IE                      6
Chrome                  18
Firefox                 9
DDG                     4

J'ai essayé d'utiliser concat des deux dataframes et j'ai ensuite prévu d'utiliser pivot mais je suis bloqué sur concat lui-même. Il ajoute des colonnes vides pour chaque ligne afin de ne pas pouvoir passer aux étapes suivantes.

Toute l'aide appréciée.


1 commentaires

il y a le même nombre de lignes et le même ordre des valeurs de la première colonne?


3 Réponses :


1
votes

S'il y a 2 colonnes, la solution DataFrame est de créer un index par première colonne et de créer Series en sélectionnant par position puis en utilisant Series.add , dernier Series.reset_index :

print (type(df1))
<class 'pandas.core.series.Series'>
print (type(df2))
<class 'pandas.core.series.Series'>

df = df1.add(df2).reset_index()
df.columns = ['Browser_name','Count']
print (df)
  Browser_name  Count
0           IE     10
1       Chrome     25
2      Firefox     15
3          DDG      6


0 commentaires

1
votes

ajoutez simplement deux blocs de données

df1['total'] = df1.iloc[:,1]+df2.iloc[:,1]
df3 = df1.iloc[:,[0,2]]
df3.columns = ['Browser_name','Count']
df3.columns = ['Browser_name','Count']


0 commentaires

0
votes

Dans ce cas, nous pouvons utiliser la méthode intégrée add .

import pandas as pd
df1 = pd.DataFrame([{'Browser_name':"IE","Count":4},{'Browser_name':"Chrome","Count":7},{"Browser_name":"Firefox","Count":6}])
df2 = pd.DataFrame([{'Browser_name':"IE","Count":6},{'Browser_name':"Chrome","Count":18},{"Browser_name":"Firefox","Count":15}])

sumData = df1["Count"].add(df2["Count"],fill_value=0)
sumData = pd.DataFrame({'Browser_name':df2["Browser_name"], 'Count':sumData.values})
print(sumData)

=========
  Browser_name  Count
0           IE     10
1       Chrome     25
2      Firefox     21


0 commentaires