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.
3 Réponses :
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
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']
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
il y a le même nombre de lignes et le même ordre des valeurs de la première colonne?