Je recherche un moyen d'importer un fichier CSV en Python et de la laisser mélanger toutes les lignes de manière aléatoire et créer un nouveau fichier CSV dans lequel les rangées sont mélangées. Je ne suis pas sûr de savoir comment commencer cela. Quelqu'un a une idée? P>
3 Réponses :
Vous pouvez utiliser Pandas: edit: concernant le index = false code> dans la dernière ligne évitera également écrire une colonne ID que Pandas a tendance à ajouter lorsque vous chargez lorsque vous chargez. un CSV. P> df.sample () code> (de ici ): p> frac code> argument de mots-clés Spécifie la fraction des lignes à revenir dans l'échantillon aléatoire, de sorte que frac = 1 signifie renvoyer toutes les lignes (dans un ordre aléatoire). p> p>
À moins que l'OP ne dispose d'une réelle utilisation pour Panda, je ne suggérerais pas d'avoir une telle dépendance pour quelque chose qui peut être fait aussi facilement avec les modules de STDLIB uniquement. Panda est censé faire des calculs sur les données tabulaires, ce qui ne l'utilise que pour lire un CSV est vraiment trop exclu.
C'est vrai, cela dépend aussi de la quantité de cette fonction. Est-ce quelque chose qui doit aller dans un module qui doit être efficace et rapide, ou est-il "juste" vouloir mélanger le fichier CSV?
Panda utilise le lecteur CSV de STDLIB SO WRT / PERFS, ce n'est que des frais supplémentaires supplémentaires ...
Vous pouvez lire le CSV avec le bibliothèque de CSV dans une matrice, Puis mélangez le tableau dans un nouveau et écrivez-le en tant que nouveau CSV. Ou mélanger directement dans la matrice si vous connaissez le nombre de lignes de la CSV. P>
lire un fichier csv: Utilisez le module STDLIB CSV code> . P>
shuffle une liste: Utilisez le module STDLIB écrire un fichier csv: Utilisez le module STDLIB Notez que certains formats CSV (Excel parmi d'autres) permettent de nouvelles lignes dans des "cellules", il est donc préférable d'utiliser le module CSV. Si vous êtes confiant 101%, vous n'aurez jamais un tel format CSV pour traiter et em> besoin d'accélérer le code autant que possible, vous pouvez simplement lire le fichier directement, mais ce n'est pas vraiment Coffre-fort. P>
Notez également que cela lira l'ensemble du fichier en mémoire, alors méfiez-vous d'énormes fichiers CSV. p> Random code> Module < / a>. p>
CSV code> . P>
@BluesheePoken filles mon édition - et mon commentaire sur votre réponse ;-)
Oui merci :), comme vous aviez raison, nous n'avons pas besoin d'une réponse doublée, je suis devenu le mien et avoué la vôtre!
Hey merci, j'essaie de le coder moi-même comme ceci: importer CSV importer au hasard avec Open ('Path1', 'R +') As R, Ouvrir ('Path2', 'R +') As W: Data = R.Readlines () En-tête, lignes = données [0], données [1:] aléatoire.shauffe (lignes) rangées = '\ n'.join ([Row.strip () pour la rangée en rangées]) W.WRITE (en-tête + rangées) fonctionne mais le format n'est pas correct. Toutes les colonnes de table sont dans le même. Je ne sais pas si vous vouliez dire que avec ce que vous avez écrit sur les cellules. Je ne suis pas sûr de quoi faire. Merci
@ Sendan21 code dans les commentaires est illisible - Modifiez votre question (en gardant l'existant existant - juste l'ajouter) ou postez un nouveau. Et s'il vous plaît lire ceci: Comment demander