3 votes

Impossible de calculer la somme des données d'une colonne basée sur la devise dans Pandas

Je dispose des données CSV suivantes :

+----------+-------------+-------+---------+
| Category | Part Number | Units |  Cost   |
+----------+-------------+-------+---------+
| Axel     |          78 |   587 | $159.95 |
| Rim      |          48 |   234 | $38.75  |
| Nut      |          39 |  1234 | $0.15   |
| Axel     |          79 |    67 | $110.95 |
+----------+-------------+-------+---------+

Et le code suivant :

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Importing the dataset
df = pd.read_csv('stock.csv',engine="python")

#Sum of values by category
df.groupby('Category').sum()['Units']
df.groupby('Category').sum()['Cost']

Lorsque j'exécute l'avant-dernière ligne, j'obtiens le résultat suivant :

df.groupby('Category').sum()['Units']
Out[4]: 
Category
Axel     654
Nut     1234
Rim      234
Name: Units, dtype: int64

Lorsque j'exécute la dernière ligne, j'obtiens l'erreur suivante :

KeyError: 'Cost'

Je ne suis pas sûr qu'il existe un moyen simple d'additionner les données sans convertir le type de données en un nombre entier, puis le reconvertir.

2voto

DYZ Points 26904

.sum() ignore toutes les colonnes non numériques. Vous devez d'abord convertir les coûts en chiffres :

df["Cost"] = df["Cost"].str[1:].astype(float)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X