J'utilise la bibliothèque Pandas pour lire 30 fichiers CSV dans le dossier. Voici le nom des fichiers situés dans le dossier "DEG_PVSYST_RUNS" dans le chemin S: / HOME / DEG_PVSYST_RUNS / B>:
Les fichiers sont nommés comme suit: P>
I am getting output Year as ['00','01'...'30'] and Base as ['Base'.'Base'...'Base'] Whereas I want output as Year as ['0','1',...,'30'] and Base as ['-0.6','-0.3','0',...,'8.4']
3 Réponses :
Vous pouvez utiliser la compréhension de la liste pour atteindre ce
Cette approche fonctionne bien aussi. Préférez-vous cela sur une seule méthode de boucle que j'essayais?
int code> et dégradation comme float code>. li>
- Si vous voulez dégradation sous forme
STR code> simplement retirer l'option de flotteur. li>
- Les deux lignes suivantes assument une entrée cohérente comme indiqué dans l'exemple. Li>
xxx pré> ul>
Ce travail extrêmement bien. Est-ce le meilleur moyen d'aller habituellement pour trancher / diviser? Merci pour votre réponse détaillée!
À partir de votre structure de texte d'entrée, vous devez trouver le mieux qui couvre tous les cas. Pour votre cas, vous pouvez dire que c'est une bonne solution. Notez que cela échouera si vous avez un caractère non numérique après _year code> ou avant
% modqal code>. Dans ce cas, votre logique changera.
Utilisez l'approche suivante:
import os import pandas as pd years, degradations = [], [] cwd = os.getcwd() csv_files = [f for f in os.listdir(os.path.join(cwd, 'deg_pvsyst_runs')) if f.endswith('.csv')] for f in csv_files: *name_parts, deg = os.path.basename(f).split('_') years.append(int(name_parts[-1].replace('Year', ''))) degradations.append(deg[:deg.index('%')]) pd.DataFrame({'Year': years, 'Degradation': degradations, 'Folder': csv_files})\ .to_csv('result.csv', index=False)
Quel est le problème que vous avez? Veuillez énumérer l'erreur ou reformuler votre question.
@Poojan je viens d'ajouter plus de lignes à la fin pour montrer mon erreur.
Le format et la longueur de votre dossier sont-ils cohérents? Si tel est le cas, vous pouvez utiliser une simple notation de tranche.