Transposer lignes et colonnes CSV
name,age,city au-dessus de Ada,36,London et Bob,41,Paris devient name,Ada,Bob, puis age,36,41 et city,London,Paris : chaque ligne devient une colonne. Les lignes courtes sont complétées par des cellules vides et les virgules entre guillemets sont respectées. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Données CSV
- name,age,city Ada,36,London Bob,41,Paris
- Données CSV
- name,Ada,Bob age,36,41 city,London,Paris
- Lignes
- 3
- Colonnes
- 3
- Lignes d'origine
- 3
Transposer un tableau CSV signifie que chaque ligne devient une colonne et chaque colonne une ligne, de sorte qu'un export large devient haut et qu'un export haut devient large sans réécrire les cellules à la main. Les analystes utilisent ce retournement lorsqu'une feuille est arrivée avec des métriques en lignes plutôt qu'en colonnes, lorsqu'un outil de graphique veut les séries dans la première colonne, ou lorsqu'une mise en page de type tableau croisé doit être défaite avant une jointure. Cette capacité analyse le CSV au style RFC 4180, complète les lignes courtes pour que la grille soit rectangulaire, échange les indices et réécrit le tableau transposé avec le même délimiteur et les bons guillemets.
Ce que signifie transposer les lignes et colonnes d'un CSV
Un fichier CSV est une grille à peu près rectangulaire : des enregistrements séparés par des sauts de ligne et des champs séparés par un délimiteur, le plus souvent une virgule. Transposer cette grille est le même échange de forme connu de l'algèbre linéaire, appliqué à des cellules de texte plutôt qu'à des nombres. La première ligne d'entrée devient la première colonne de sortie ; la première colonne d'entrée devient la première ligne de sortie.
Un tableau trois sur deux devient deux sur trois. Les en-têtes ne sont pas spéciaux : si la première ligne est name, age, city, ces libellés passent dans la première colonne du résultat, ce que visent la plupart des recherches « retourner cette feuille ». La définition n'a de sens que lorsque chaque ligne partage le même nombre de colonnes.
Les exports réels sont souvent irréguliers — une ligne sans le champ vide final, une autre avec une virgule en trop —, aussi cet outil complète les lignes courtes par des chaînes vides jusqu'à la ligne la plus large, au lieu d'inventer des données ou de supprimer des cellules. Les champs entre guillemets suivent RFC 4180 : une cellule qui contient le délimiteur, un guillemet double ou un saut de ligne reste une seule cellule, et un guillemet interne s'écrit comme deux.
Préférez cette landing transpose-csv-rows-and-columns lorsque l'intention est un simple retournement d'orientation.
Contrat d'entrée, règles de citation et champs de réponse
Le delimiter optionnel vaut virgule par défaut ; utilisez un seul caractère ou l'orthographe courante de tabulation pour le TSV. Un champ n'est cité en sortie que s'il contient le délimiteur, un guillemet, CR ou LF, afin que les identifiants simples restent compacts. Les lignes vides de la source sont ignorées ; les cellules vides sont conservées, y compris une cellule vide en tête après le retournement.
Exemple : name,age puis Ada,36 devient name,Ada sur la première ligne résultat et age,36 sur la deuxième. Utilisez csv lorsque vous avez besoin d'un fichier à télécharger ou à coller ; utilisez cells lorsqu'un client affichera un tableau sans analyser à nouveau.
Cas d’usage
Retournez un export mensuel large
Collez une feuille où chaque mois est une colonne, transposez pour que chaque mois soit une ligne, puis envoyez le tableau haut vers un graphique ou une jointure.
Corrigez un dump d'enquête de travers
Les outils d'enquête émettent parfois un répondant par colonne. Transposez le CSV pour que chaque personne soit une ligne avant l'analyse.
Questions fréquentes
Comment transposer les lignes et colonnes d'un CSV ?
Le champ csv de la réponse est le tableau retourné ; cells est la même grille sous forme de tableaux. Le delimiter optionnel vaut virgule par défaut.
Que devient la ligne d'en-tête ?
La première ligne devient la première colonne. Des libellés comme name, age et city passent dans la première colonne de sortie, ce qui est le retournement habituel d'une feuille.
Comment les lignes inégales sont-elles traitées ?
Les lignes courtes sont complétées par des chaînes vides jusqu'à la ligne la plus large pour que la transposition reste rectangulaire. Aucune cellule n'est supprimée et aucune valeur n'est inventée au-delà de ces vides.
Conserve-t-il les virgules dans les champs entre guillemets ?
Oui. L'analyse et l'écriture suivent RFC 4180 : les champs cités peuvent contenir le délimiteur, des guillemets (doublés) et des sauts de ligne.
L'outil pour transposer un CSV est-il gratuit ?
L'outil du navigateur s'exécute gratuitement sur votre appareil.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/str/csv-transpose \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"csv":"name,age,city\nAda,36,London\nBob,41,Paris"}'const res = await fetch("https://api.kit.forhosting.com/str/csv-transpose", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"csv": "name,age,city\nAda,36,London\nBob,41,Paris"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/csv-transpose",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"csv": "name,age,city\nAda,36,London\nBob,41,Paris"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/csv-transpose", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"csv":"name,age,city\\nAda,36,London\\nBob,41,Paris"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"csv":"name,age,city\nAda,36,London\nBob,41,Paris"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/csv-transpose", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"csv": "name,age,city\nAda,36,London\nBob,41,Paris"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.csv_transpose",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Une entrée vide, des guillemets non fermés et des tableaux trop grands échouent en invalid_input au lieu d'une demi-grille silencieuse. Les appels API réussis sont facturés à $0.002 ; les échecs de validation ne sont pas facturés.
Ce que signifie transposer les lignes et colonnes d'un CSV
Ne l'utilisez pas pour filtrer des lignes, renommer de nombreuses colonnes, joindre deux fichiers ou convertir tout un tableau en JSON imbriqué — ce sont d'autres intentions produit. Le chemin est entièrement déterministe : le même texte CSV et le même délimiteur produisent toujours le même JSON, sans réseau, sans graine aléatoire et sans horloge murale.
Contrat d'entrée, règles de citation et champs de réponse
Envoyez un corps JSON avec le champ chaîne obligatoire csv égal au texte non vide du tableau. Les alias text, input, data, source, content et value sont acceptés pour le corps CSV. Absence de csv, csv vide, csv non chaîne, un délimiteur qui n'est pas exactement un caractère, un délimiteur qui est un guillemet ou un saut de ligne, des champs cités non fermés et des tableaux qui dépassent les limites de taille documentées déclenchent invalid_input avec un message qui nomme le problème, et ces échecs ne sont pas facturés sur l'API prépayée. En succès la réponse inclut csv comme texte du tableau transposé avec séparateurs de lignes LF et citation RFC 4180, cells comme la même grille sous forme de tableaux, rows et cols pour la forme du résultat, original_rows et original_cols pour la forme d'entrée (original_cols est la largeur maximale avant le complément), delimiter qui rappelle le séparateur utilisé, et method toujours csv_transpose.
Usage de l'API, tarifs, flux de travail et limites pratiques
Appelez l'outil gratuit dans le navigateur pour transposer un CSV lorsque vous devez retourner un tableau de devoirs, un export CRM ou un dump de métriques sans ouvrir un tableur ni écrire un script improvisé. Un flux typique colle un export large avec les mois en tête, transpose pour que chaque mois soit une ligne, puis envoie le résultat vers un graphique ou une jointure. Associez ce point d'entrée à extract-csv-column, filter-csv ou csv-to-json lorsque l'étape suivante est une liste d'un seul champ, un filtre de lignes ou un tableau d'objets, mais gardez transposer CSV comme landing propre afin de ne pas mêler le retournement d'orientation aux transformations qui renomment ou calculent des colonnes. N'attendez pas de détection automatique du délimiteur, d'inférence de types ni un moteur complet de tableau croisé avec agrégations — ce sont d'autres problèmes. Utilisez l'API prépayée KIT lorsqu'un CMS, une étape ETL, un harnais QA, une application de tutorat ou un client mobile ont besoin du même contrat avec un solde à $0.002 par élément réussi ; les échecs de validation ne consomment jamais le solde après le rejet du moteur. Les auteurs qui livrent des SDK peuvent documenter csv comme obligatoire, montrer un exemple de succès avec une ligne d'en-tête et un exemple d'erreur csv manquant pour que les intégrateurs voient les deux faces du contrat. Gardez les charges dans des tailles de document ordinaires adaptées à un isolate Worker, plutôt que des dumps d'entrepôt de plusieurs mégaoctets.
Cas d'intégration
Fixtures golden pour analyseurs CSV
Les scripts CI figent un échantillon cité et irrégulier et vérifient csv et cells transposés afin que citation et complément ne régressent pas en silence.