Je peux ouvrir et lire un fichier CSV et imprimer les colonnes sélectionnées à l'aide du module CSV. Cependant, je n'ai pas pu extraire quelques colonnes et le stocker dans une liste à l'aide du module CSV
Mon fichier n'a que 4 colonnes (nom, équipe, collège et salaire) et je veux juste extraire 2 colonnes, nommément nom et salaire et Ensuite, je calcule tous les salaires de la colonne de salaire. Je cherche une solution de module CSV et non des pandas. Ceci est une exigence étrange. P>
4 Réponses :
Vous pouvez le faire:
df = pd.read_csv(filename, usecols=['Name', 'Salary'])
Merci. Je sais que cela peut être fait en pandas et c'est très simple. C'est juste que mon exigence est le module CSV.
Si je comprends correctement: p> avec Importer csv < / p> csv.reader () code> p>
Merci Kostas. Oui, votre solution fonctionne. Question suivante, pouvez-vous remplacer csv.dicterreader avec csv.reader? Juste curieux.
@Tony oui vous pouvez le faire avec quelques modifications. dicterreader code> crée un objet de type dict que vous pouvez utiliser une clé pour utiliser des données d'autre part csv.reader code> est un objet de type liste que vous devez utiliser le numéro de la colonne. J'espère que j'ai aidé.
Salut Kostas, pourriez-vous fournir la syntaxe s'il vous plaît? Je ne pouvais pas le trouver ailleurs. Utilisation de votre programme, qu'est-ce qui peut être modifié.
Oui, j'ai testé vos codes. La sortie est légèrement sortie.
[{'Nom': 'Nom', 'Salaire': 'Position'}, {'Nom': 'Avery Bradley', 'Salaire': 'PG'}, {'Nom': 'Jae Crowder', 'Salaire ':' SF '}, {' Nom ':' John Holland ',' Salaire ':' SG '},
Lorsque vous utilisez csv.reader, je veux juste le nom et le salaire que sans les en-têtes. L'image que j'ai posté au-dessus de la même chose sauf sans les en-têtes et les données "Team" et "College".
Ensuite, vous avez probablement un délimiteur différent entre vos colonnes, il a donc fallu une autre colonne nommée position code>. Essayez de changer le délimiteur en disons délimiter = ';' code>
Si vous ne voulez pas que les en-têtes utilisent mieux, utilisez le dicterreader code>. Également dans le deuxième exemple si vous utilisez simplement des données = données [1:] code> vous retirez le premier élément qui sont les en-têtes.
Merci Kostas, avez-vous un lien Web où je peux en apprendre davantage sur DicterRer? Je souhaite rechercher les données ou supprimer en fonction de certains critères, supprimer ou ajouter plus de colonnes, etc.
Bonjour Kostas, pour CSV.Reader, comment puis-je modifier vos codes pour avoir les données pour le nom et le salaire sans les en-têtes. Juste 2 colonnes de données. Pourrais-tu me montrer. Pas de calcul ni d'affichage. Je suis très nouveau à cela.
@Tony c'est la documentation docs.python.org/3/library/csv.html < / a>
Merci Kostas, je vais y jeter un coup d'œil. Est-ce le seul site que vous avez? J'aimerais avoir plus d'exemples.
n'utilisez pas de pandas à moins que le fichier soit petit. Les pandas sont super lents.
import csv
data_list = []
with open('nba.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
data_list.append([row['Name'], row['Salary']])
Si la performance est une préoccupation, vous pouvez utiliser opérateur.Itemplgeter a> Pour obtenir les colonnes que vous voulez. >>> igetter = operator.itemgetter('Name', 'Salary')
>>> with open('nba.csv') as f:
... reader = csv.DictReader(f)
... data = [igetter(row) for row in reader]
...
>>> data
[('Avery Bradley', '7730377'), ('Jae Crowder', '6796117'), ('John Holland', '1749840'), ('R. J. Hunter', '1148640')]
Vous pouvez le faire assez facilement à l'aide de Pandas Bibliothèque
Souhaitez-vous le sauvegarder dans CSV? Ou juste calculer la somme des salaires? Si tel est le cas, vous avez fait la partie la plus difficile, il suffit de définir une variable
somme = 0 code> et dans votre boucle do somme + = ligne ["salaire] code> Bonjour Frankie567, je veux stocker les 2 colonnes dans une liste appelée Données et elle sera utilisée ultérieurement.
Bonjour Sreekiran, oui je l'ai fait dans des pandas. Maintenant, mes besoins sont le module CSV et c'est mon problème.