Comment faire la somme de plusieurs colonnes (colonnes C4, C5 et C6, par exemple) en utilisant chaque entrée unique dans une autre colonne (par exemple C2). Par exemple, je voudrais créer une nouvelle base de données qui réduirait la colonne C2 par import et export et montrerait aussi la somme de C4, C5 et C6 (et de préférence supprimer les autres colonnes C1 et C3).Python: additionner plusieurs colonnes dans une trame de données par chaque entrée de ligne unique dans une autre colonne
Répondre
Vous pouvez le faire en utilisant les pandas géants groupby fonction
df = pd.DataFrame([['A', 'Import', 'Argentina', 1, 1, 1],
['B', 'Import', 'Brazil', 2, 2, 2],
['C', 'Export', 'UJ', 3, 3, 3],
['D', 'Export', 'US', 4, 4, 4],
['A', 'Export', 'Canada', 5, 5, 5],
['B', 'Export', 'Russia', 6, 6, 6],
['C', 'Import', 'China', 7, 7, 7],
['D', 'Import', 'India', 8, 8, 8]],
columns=['C1', 'C2', 'C3', 'C4', 'C5', 'C6'])
results = df.groupby("C2").sum()
print(results)
Ce qui vous donnera
C4 C5 C6
C2
Export 18 18 18
Import 18 18 18
merci c'est très utile, exactement ce qui me manquait. Existe-t-il un meilleur moyen d'ignorer les colonnes indésirables précédentes que de créer une nouvelle structure de données: results [C4:] – KSQ
@KSQ pandas a tendance à fonctionner en créant de nouvelles copies de la structure de données lorsque des modifications sont effectuées, certaines fonctions ont un inplace option pour ne pas créer une nouvelle copie. Par exemple, pour déposer des colonnes, vous pouvez faire 'df.drop (['C1', 'C2', C3 '], axis = 1, inplace = True)', qui retournera seulement les dernières colonnes et ne créera pas de copie. –
Je vois, merci Ken cela a été très utile – KSQ
S'il vous plaît fournir un exemple de code que vous avez essayé –
j'ai simplifié le problème parce que mon dataset réel est trop grand mais si xdata est mon dataframe, j'ai utilisé ydata = xdata.sum (axis = 0) pour obtenir une somme de chaque colonne puis esse Utilisé nativement ydata [C4:] pour isoler le grand total mais n'a évidemment pas retenu la possibilité de sommer par des entrées de lignes spécifiques dans les colonnes C1, C2 ou C3 – KSQ