0
votes

Nom de Pandas Dataframe à partir d'une chaîne en nom de CSV

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)


2 commentaires

Au lieu de df_paris et df_berlin , vous devez créer un dictionnaire dfs avec des touches 'Paris' et ' Berlin ', vous pouvez donc faire dfs [' Paris '] et dfs [' Berlin '] .


Pourriez-vous écrire comme réponse et plus détaillé? Merci!


3 Réponses :


1
votes

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


0 commentaires

0
votes

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)


0 commentaires

1
votes

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 xxx


2 commentaires

Je ne peux pas voir ce que vous faites référence à .... Combien de codage avez-vous fait avec dict et compréhensions? Vous pouvez toujours faire référence à un df chargé comme dfname ["dfparis"] . Le point de l'impression () était de montrer ceci. Connaissez-vous un dict est une structure dynamique de paires de clé / valeur?


oui je sais dicter! Je n'avais que d'avoir utilisé / vu encoreataframe comme dict.