J'essaie de charger et de convertir un fichier csv en une liste de listes au format suivant:
Exemple: people.csv est au format:
[['Name=bob', 'Age=21', 'Sex=M'],['Name=Tina', 'Age=22', 'Sex=F'], ['Name=Tim','Age=25','Sex=M']]
J'essaye de le convertir en liste de listes dans ce format:
Name | Age | Sex ---------------- bob | 21 | M Tina | 22 | F Tim | 25 | M
où le nom, l'âge et le sexe sont les en-têtes de colonne dans le fichier csv.
J'ai essayé de formater une valeur à la fois, mais y a-t-il une meilleure façon d'effectuer cette opération avec ou sans un dataframe pandas.
Merci
3 Réponses :
Utilisation du module csv -> csv.DictReader.
import csv
with open(filename) as infile:
reader = csv.DictReader(infile)
result = [["{}={}".format(k, v) for k, v in row.items()] for row in reader]
print(result)
Je recommande d'utiliser des pandas pour ce travail
parsedArr = [["Name=" + str(x[0]), "Age=" + str(x[1]), "sex=" + str(x[2])] for x in arr]
et maintenant vous avez un tableau 2D de toutes les valeurs du fichier.
Si vous souhaitez ajouter le titres "Name =" ou "age =" vous pouvez alors procéder soit à parcourir manuellement la liste ajouter ajouter les valeurs en utilisant la fonction suivante
import pandas as pd
df = pd.read_csv("file_name") #you can define if there is a header or not in the file
arr= df.values.tolist()
Ou, encore mieux, vous pouvez modifier le dataframe pour le faire pour vous en utilisant df.apply
Modifier le DataFrame est une option beaucoup plus rapide
Peut-être pas la solution la plus élégante, mais facile à comprendre.
import pandas as pd
df = pd.read_csv("file_name")
entries = []
for i in range(0,len(df)
tup = (df.loc[i,'Name'],df.loc[i,'Age'],df.loc[i,'sex']
entries.append(tup)