A voir également:
- [Python] Copier aléatoirement des rangées à p
- Copier une vidéo youtube - Guide
- P/n ✓ - Forum Logiciels
- Super copier - Télécharger - Gestion de fichiers
- Citizen code python avis - Accueil - Outils
4 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
26 oct. 2008 à 16:30
26 oct. 2008 à 16:30
Ok. Et qu'est ce qui te pose problème là dedans du coup?
Bon, j'explique encore une fois, différemment, en espérant que je serai plus clair.
J'ai un tableau de données au format csv.
Ce tableau contient 8000 lignes et 30 colonnes.
J'aimerais copier ces lignes à droite des données existantes. Donc après une copie, j'aurai un tableau de 8000 lignes toujours, mais de 60 colonnes (vous me direz qu'on peut faire ça sous Excel, et je suis d'accord, mais si vous faites non pas une copie mais 300 copies, Excel n'arrive plus).
Est-ce que jusqu'ici c'est clair ?
Ensuite, j'ajoute une contrainte. Je souhaite mélanger les lignes quand je les copies. Donc la ligne 1 sera copiée à la position 4384 par exemple, et la 2 à la 121, etc.
Finalement, j'ajoute une dernière contrainte. J'aimerais que lorsque je les copie, je ne les copies jamais deux fois à la même place. La première ligne du tableau que je souhaite obtenir à la fin contiendra par exemple sur la 1e ligne les lignes originales 1, puis 453, puis 7832, puis 4, puis 987, etc. 300 fois sans jamais en contenir deux fois la même.
Ensuite, j'aimerais aussi traiter les headers, mais bon, c'est un détail.
J'ai un tableau de données au format csv.
Ce tableau contient 8000 lignes et 30 colonnes.
J'aimerais copier ces lignes à droite des données existantes. Donc après une copie, j'aurai un tableau de 8000 lignes toujours, mais de 60 colonnes (vous me direz qu'on peut faire ça sous Excel, et je suis d'accord, mais si vous faites non pas une copie mais 300 copies, Excel n'arrive plus).
Est-ce que jusqu'ici c'est clair ?
Ensuite, j'ajoute une contrainte. Je souhaite mélanger les lignes quand je les copies. Donc la ligne 1 sera copiée à la position 4384 par exemple, et la 2 à la 121, etc.
Finalement, j'ajoute une dernière contrainte. J'aimerais que lorsque je les copie, je ne les copies jamais deux fois à la même place. La première ligne du tableau que je souhaite obtenir à la fin contiendra par exemple sur la 1e ligne les lignes originales 1, puis 453, puis 7832, puis 4, puis 987, etc. 300 fois sans jamais en contenir deux fois la même.
Ensuite, j'aimerais aussi traiter les headers, mais bon, c'est un détail.
J'ai de la peine à manipuler les fichiers CSV et en gros à faire du copier coller.
J'importe d'abord les outils nécessaire :
import random
import csv
J'ouvre mes fichiers :
cr=csv.reader(open("data.csv",'rb'), delimiter=';')
cw=csv.writer(open("result.csv", 'wb'))
Et j'arrive à générer la liste des numéros de lignes que j'aimerais copier :
random.sample(xrange(8000),n)
Ceci va générer une liste n éléments entre 1 et 8000 sans avoir deux fois la même valeur. Et c'est précisément ce que je cherche à obtenir.
Reste plus ensuite qu'à copier les valeurs du fichier d'origine dans le fichier résultat, en copiant les lignes les unes après les autres dans l'ordre obtenu plus haut. Et là, je n'y arrive pas. Je ne vois pas trop comment accéder aux lignes et à les copier...
J'importe d'abord les outils nécessaire :
import random
import csv
J'ouvre mes fichiers :
cr=csv.reader(open("data.csv",'rb'), delimiter=';')
cw=csv.writer(open("result.csv", 'wb'))
Et j'arrive à générer la liste des numéros de lignes que j'aimerais copier :
random.sample(xrange(8000),n)
Ceci va générer une liste n éléments entre 1 et 8000 sans avoir deux fois la même valeur. Et c'est précisément ce que je cherche à obtenir.
Reste plus ensuite qu'à copier les valeurs du fichier d'origine dans le fichier résultat, en copiant les lignes les unes après les autres dans l'ordre obtenu plus haut. Et là, je n'y arrive pas. Je ne vois pas trop comment accéder aux lignes et à les copier...
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
25 oct. 2008 à 17:02
25 oct. 2008 à 17:02
J'ai rien compris :-s