importer csv avec deux lignes comme en-têteSalut,
Je travaille avec des fichiers csv relativement volumineux (± 150 Mo), les fichiers commencent par deux lignes qui doivent être combinées comme en-tête de colonne.
J'ai écrit un script qui parcourt chaque colonne et définit le nom de la colonne sur le nom actuel + la valeur de la première ligne.
Le problème c'est qu'il tourne très lentement, parfois j'ai besoin d'attendre ± 10min pour changer le nom de 4000 colonnes.
Cela dépend en quelque sorte de la taille du fichier, changer la même quantité de colonne dans un petit fichier prend quelques secondes.
J'ai essayé quelques solutions de contournement -
1. sous-ensemble uniquement la première ligne et en changeant tous les noms de colonne (très rapide). J'ai alors pensé que je concaténerais la table d'origine, mais je ne peux pas le faire car les noms de colonnes ne sont plus les mêmes.
2. mise à jour du paramètre d'importation CSV comme suggéré Ici . mais je ne vois toujours pas d'option pour inclure deux lignes comme en-tête.
3. exportez le fichier au format xls puis importez-le avec deux lignes comme en-tête. le temps d'exportation est plus long que le changement de nom de colonne d'origine.
Existe-t-il une autre solution de contournement qui me manque, peut-être existe-t-il une option pour modifier tous les noms de colonne en fonction d'une liste?
Merci d'avance pour les aides.
Tableau de donnéesScriptingRe: importer csv avec deux lignes comme en-têtesalut @Rans ,
Si vous ouvrez le fichier avec JMP et décochez la case "Utiliser le programme par défaut pour ouvrir. Décochez pour ouvrir sous forme de texte. ", Puis sélectionnez le bouton radio" Données (Utilisation de l'aperçu) "; assurez-vous de sélectionner tous les fichiers (*. *) Dans la fenêtre ouverte de JMP.

Vous pouvez ensuite sélectionner certains des délimiteurs importants et d'autres choses, y compris la ligne à partir de laquelle les données commencent, donc s'il y a deux lignes comme en-têtes, vous en sautez une, puis définissez les données commençant à la ligne 3 ou quoi que ce soit.

Vous pouvez ensuite ouvrir le script "Source" dans la table de données et modifier les paramètres d'importation si nécessaire et utiliser ce script dans votre programme JSL.

Alternativement, si vous pouvez le réenregistrer en tant que fichier XLSX, vous pouvez utiliser la commande Open () et définir quel onglet ouvrir, quelle colonne démarrer / arrêter avec, et quelle ligne démarrer / arrêter ainsi que plusieurs lignes comme en-tête. Cela devrait résoudre votre problème de devoir renommer les colonnes.

La dernière option que je mentionnerais est que si vous connaissez les noms des colonnes et qu'ils ne changent pas, alors dans votre script, vous pouvez avoir une liste ColNames = {"...", "...", .. .} avec tous les noms corrects entre guillemets séparés par des virgules dans la liste. Ensuite, après avoir chargé le fichier CSV, vous pouvez exécuter une boucle For pour renommer chaque colonne en fonction des entrées dans ColNames. Par exemple:
dt=Current data table();//or whatever your data table name is.
icols=.;//variable to count through the columns
For(icols=1, icols<=N Columns(dt), icols++,
Column(dt, icols) <<SET name=""></SET>
J'espère que l'une de ces aides!
Bonne chance,
DS
Re: importer csv avec deux lignes comme en-têteVous pouvez essayer d'importer plusieurs fichiers, même pour un seul fichier. Peut-être plus rapide et prend en charge plusieurs en-têtes de ligne.
Fichier-> Importer plusieurs fichiers