J'ai plusieurs CSV avec une chaîne dans leur nom (par exemple, votre nom de ville) et souhaitez les lire dans Dataframe avec les noms dérivés de ce nom de ville.
Exemple de noms CSV: data_paris.csv, data_berlin.csv
Comment puis-je les lire dans une boucle pour obtenir df_paris et df_berlin? p>
Qu'est-ce que j'ai essayé jusqu'à présent: p>
all_files = glob.glob(./*.csv") for filename in all_files: city_name=re.split("[_.]", filename)[1] #to extract city name from filename dfname= {'df' + str(city_name)} print(dfname) dfname= pd.read_csv(filename)
3 Réponses :
Je recommanderais contre la nommage automatique dynamique comme df_paris code>,
df_berlin code>. Au lieu de cela, vous devriez faire:
all_files = glob.glob("./*.csv")
# dictionary of dataframes
dfs = dict()
for filename in all_files:
city_name=re.split("[_.]", filename)[1] # to extract city name from filename
dfs[city_name] = pd.read_csv(filename) # assign to the dataframe dictionary
Le seul Dataframe que vous créez est "DFName". Vous continuez simplement à écraser chaque fois que vous bouclez. Je suppose que vous pourriez faire cela à l'aide de globaux (), bien que honnêtement, je voudrais probablement créer une liste ou une dict de données de données (comme il semble que d'autres l'ont suggéré que je tapais cela), sinon créer une colonne nommée pour "ville" Dans un Master Dataframe que je continue à être ajouté à. Mais, en gardant avec ce que vous demandez spécifiquement, vous pourriez probablement le faire comme si:
all_files = glob.glob("./*.csv") for filename in all_files: globals()[filename[5:-4]]= pd.read_csv(filename)
Vous mélangez vos concepts. Si vous souhaitez faire référence à des cadres de données de manière dynamique qui ont été chargés, utilisez un dict code>
Je ne peux pas voir ce que vous faites référence à .... Combien de codage avez-vous fait avec dict code> et compréhensions? Vous pouvez toujours faire référence à un df chargé comme
dfname ["dfparis"] code>. Le point de l'impression
() code> était de montrer ceci. Connaissez-vous un
dict code> est une structure dynamique de paires de clé / valeur?
oui je sais dicter! Je n'avais que d'avoir utilisé / vu encoreataframe comme dict.
Au lieu de
df_paris code> et
df_berlin code>, vous devez créer un dictionnaire
dfs code> avec des touches
'Paris' code> et
' Berlin ' Code>, vous pouvez donc faire
dfs [' Paris '] code> et
dfs [' Berlin '] code>.
Pourriez-vous écrire comme réponse et plus détaillé? Merci!