Transponer una tabla cuyas filas deberían haber sido columnas
Publicado el 22/7/2026 · 13 min de lectura · Herramientas para desarrolladores
Daniel Okonkwo — Desarrollador front-end y redactor de Tecnología en OneKitly
Rendimiento web · Formatos de archivo
Verificado con 4 fuentes
Transponer intercambia filas y columnas: la celda [f][c] pasa a ser la celda [c][f], y nada más cambia. La fila de cabecera pasa a ser la primera columna, así que Name,Q1,Q2,Q3 sobre Alice,10,20,30 y Bob,5,6,7 vuelve como Name,Alice,Bob, luego Q1,10,5, luego Q2,20,6 y luego Q3,30,7: cuatro filas, tres columnas, y las etiquetas bajan ahora por el borde izquierdo en vez de correr por arriba. Las filas de longitud desigual se rellenan, nunca se truncan: la salida tiene tantas filas como celdas tenía la fila de entrada más ancha, y una fila corta aporta cadenas vacías. Con a,b,c sobre 1,2 y 3,4,5,6 obtienes cuatro filas de salida, la última de las cuales es ,,6: una fila sin nombre que lleva el valor que la cabecera nunca contempló. El entrecomillado se rehace desde cero, así que una celda con el delimitador o un salto de línea vuelve bien entrecomillada. No hay conversión de tipos alguna: 007 sigue siendo 007, 1.0 sigue siendo 1.0, true sigue siendo true, porque la herramienta solo mueve texto. El delimitador se detecta en el primer registro y la salida usa el mismo: un archivo con punto y coma se transpone a un archivo con punto y coma. Dos cosas que vigilar. Una línea en blanco dentro de la entrada pasa a ser una columna entera vacía en la salida, porque una línea en blanco es una fila con una celda vacía. Y transponer no es pivotar: una tabla en formato largo con una clave repetida vuelve con cabeceras de columna duplicadas en lugar de remodelada, porque girar una tabla no agrupa nada.
Qué le pasa a la fila de cabecera, a las filas de longitud desigual, a los tipos — y la única cosa con la que se confunde habitualmente transponer y que no puede hacer.
Qué le pasa a la fila de cabecera
Nada especial, y ese es justo el punto que conviene entender antes de usar el resultado. La herramienta no tiene ni idea de que tu primera fila es una cabecera. Lee una cuadrícula de celdas, escribe la misma cuadrícula con los ejes intercambiados, y para. Así, Name,Q1,Q2,Q3 sobre Alice,10,20,30 y Bob,5,6,7 se convierte en cuatro filas: Name,Alice,Bob, luego Q1,10,5, luego Q2,20,6 y luego Q3,30,7. Tus etiquetas de columna son ahora la primera celda de cada fila, y tus etiquetas de fila —Alice y Bob— son ahora la cabecera.
La primerísima celda de la tabla, la que decía Name, acaba en la esquina de la salida como etiqueta de una fila de cabecera que ya no etiqueta nada útil. Es lo normal en una tabla transpuesta y por eso casi todo el mundo la renombra después a mano: de Name a algo como Métrica o Periodo, según lo que baje ahora por la izquierda. Lo importante es que lo que lea el archivo a continuación sigue creyendo que la primera fila es una cabecera, y esa primera fila es ahora la lista de tus antiguas etiquetas de fila. Si metes el resultado en un conversor de CSV a JSON, tus claves serán Name, Alice y Bob.
Filas irregulares: rellena, y nunca trunca
Una exportación real no siempre es rectangular. Una fila puede ser corta porque un campo final estaba vacío y el escritor paró antes; una fila puede ser larga porque un delimitador sin escapar partió un campo en dos. Las dos cosas pasan, y un transponedor tiene que decidir cuál es la altura de la salida. Este usa la fila más ancha: el número de filas de salida es igual al número de celdas de la fila de entrada más larga, y toda posición que ninguna fila de entrada llenó pasa a ser una cadena vacía.
La demostración es corta. Toma la cabecera a,b,c sobre las dos filas 1,2 y 3,4,5,6. La fila más ancha tiene cuatro celdas, así que la salida tiene cuatro filas: a,1,3, luego b,2,4, luego c,,5 y luego ,,6. Lee con atención esa última fila. Lleva el valor 6, que es dato real de la entrada, y su primera celda está vacía porque la cabecera solo tenía tres nombres. La herramienta te está diciendo algo verdadero y útil —había un cuarto campo en una fila y nada lo nombraba— y te lo dice dejando una fila sin nombre al final en lugar de borrar la prueba. Truncar habría tirado justo la celda que demuestra que tu archivo tiene un problema de entrecomillado.
De ahí se sigue un efecto secundario. Transponer dos veces una tabla irregular no devuelve el original: la primera pasada rellena los huecos, así que la segunda reconstruye un rectángulo. a,b,c sobre 1,2 y 3,4,5,6 vuelve como a,b,c, sobre 1,2,, y 3,4,5,6: los mismos valores, cuatro columnas en todas partes, vacíos finales donde el original era corto. En una tabla rectangular la doble transposición es exacta y devuelve el archivo de partida, byte a byte, siempre que el entrecomillado ya fuera mínimo.
Los tipos: la herramienta no hace nada, y ahí es donde se traslada el riesgo
No hay conversión de tipos en ninguna parte de esta herramienta. Analiza las celdas como texto, las mueve y las vuelve a escribir como texto. 007 sigue siendo 007, 1.0 sigue siendo 1.0, true sigue siendo true, y una fecha sigue siendo la cadena que era. Nada se redondea, nada se reinterpreta, y un cero inicial no puede perderse, porque nunca existe ningún número.
El riesgo está enteramente aguas abajo, y lo crea la transposición. Antes, cada columna era homogénea: una columna de fechas, una de importes, una de nombres de región. Después, cada columna es una mezcla, porque contiene una celda de cada columna original. Abre el resultado en una hoja de cálculo y la adivinación de tipos se ejecuta columna a columna sobre datos que ya no tienen un tipo por columna. La etiqueta de la primera celda es texto y el resto son números, así que una columna de números se lee como texto, o una celda suelta que parece una fecha se convierte en una. No es obra del transponedor, pero sí su consecuencia, y por eso el consejo práctico es transponer en una herramienta de texto y abrir el resultado con todas las columnas forzadas a texto en vez de dejar que la hoja de cálculo infiera.
Dónde aparece esto, y el único trabajo que no puede hacer
Tres situaciones dan cuenta de casi todo. Una serie temporal exportada en formato largo, una fila por periodo, cuando el gráfico que estás construyendo quiere una columna por periodo. Una exportación de encuesta donde las preguntas son filas y los encuestados columnas, o al revés, según la herramienta que la escribiera. Y un informe en el que alguien montó la tabla dinámica al revés y la envió, así que el archivo que llega a tu bandeja tiene los periodos al costado y las métricas arriba cuando todo lo demás de tu cadena espera lo contrario. En los tres, el arreglo es una transposición genuina: los datos ya tienen la forma correcta, solo están girados.
Hay una cuarta situación que parece idéntica y no lo es, y es la que cuesta una tarde. Una tabla en formato largo tiene una columna clave que se repite: Fecha, Región, Ventas, con dos filas para enero porque hay dos regiones. Transponerla no la remodela. Dale a la herramienta Date,Region,Sales sobre 2026-01,North,120, 2026-01,South,90 y 2026-02,North,140, y la salida son tres filas: Date,2026-01,2026-01,2026-02, luego Region,North,South,North y luego Sales,120,90,140. La primera fila tiene ahora una cabecera duplicada, y la tabla sigue siendo larga: una entrada por observación, solo escrita de lado. Lo que querías era un pivote: agrupar por fecha, desplegar las regiones en columnas y poner las ventas en las celdas. Eso es una agregación, no una rotación, y exige una herramienta que sepa qué columna es la clave, cuál la etiqueta y cuál el valor.
Tres comportamientos discretos que conviene conocer
Una línea en blanco dentro de tu entrada pasa a ser una columna vacía en la salida. No es un error y se sigue directamente de la definición: una línea en blanco es una fila que contiene una celda vacía, así que tras la rotación es una columna que contiene una celda vacía más relleno. Dale a la herramienta a,b, luego 1,2, luego una línea en blanco y luego 3,4, y obtienes a,1,,3 sobre b,2,,4: la tercera columna es la línea en blanco. Como la gente pega datos con líneas en blanco separando bloques más a menudo de lo que cree, esta es la sorpresa más frecuente que produce la herramienta. Quita las líneas vacías antes de transponer si no las querías.
El delimitador sale tal como entró. Se detecta en el primer registro y se reutiliza para la salida, así que un archivo con punto y coma se transpone a un archivo con punto y coma y uno con tabulaciones a uno con tabulaciones. No hay opción de cambiarlo por el camino: si quieres otro, pasa después el conversor de delimitador. El corolario es que una detección equivocada arruina el resultado en vez de degradarlo: fuerza la coma en un archivo que de verdad usa punto y coma y cada línea pasa a ser una sola celda, así que toda la tabla se transpone en una única fila.
El entrecomillado se reconstruye, no se arrastra. Cada celda se reexamina a la salida y se entrecomilla solo si ahora contiene el delimitador, una comilla o un salto de línea. Una celda con y,z estaba entrecomillada en la entrada y vuelve a estarlo en la salida; una celda entrecomillada sin motivo vuelve desnuda. Las celdas con saltos de línea incrustados sobreviven intactas, siguen entrecomilladas y siguen ocupando dos líneas físicas del archivo. Esto significa que la salida es un CSV válido incluso cuando la entrada estaba entrecomillada más de lo necesario, y también que una comparación byte a byte de una doble transposición diferirá si el original llevaba comillas superfluas.
| Entrada | Salida | Qué significa |
|---|---|---|
| Name,Q1,Q2,Q3 / Alice,10,20,30 / Bob,5,6,7 | Name,Alice,Bob / Q1,10,5 / Q2,20,6 / Q3,30,7 | La fila de cabecera pasa a primera columna; las etiquetas de fila pasan a cabecera |
| a,b,c / 1,2 / 3,4,5,6 | a,1,3 / b,2,4 / c,,5 / ,,6 | Rellena hasta la fila más ancha y nunca trunca; la última fila queda sin nombre porque la cabecera era corta |
| a,b,c / 1,2,3 / x,"y,z",w | a,1,x / b,2,"y,z" / c,3,w | El entrecomillado se rehace desde cero: una celda con el delimitador se vuelve a entrecomillar en su nueva posición |
| a,b / 1,2 / (una línea en blanco) / 3,4 | a,1,,3 / b,2,,4 | Una línea en blanco es una fila con una celda vacía: tras la rotación es una columna vacía |
| Date,Region,Sales / 2026-01,North,120 / 2026-01,South,90 / 2026-02,North,140 | Date,2026-01,2026-01,2026-02 / Region,North,South,North / Sales,120,90,140 | Transponer no es pivotar: la clave repetida produce una cabecera duplicada y la tabla sigue siendo larga |
Preguntas frecuentes
- ¿La primera fila se trata como cabecera?
- No, y no hay opción para decir que lo sea. La herramienta lee una cuadrícula y la gira; toda fila es una fila. Es el comportamiento deseable, porque un transponedor que tratara la primera fila de forma especial tendría que decidir qué hacer con ella: dejarla arriba, lo que no sería una transposición, o moverla fingiendo que sigue siendo cabecera, lo que sería mentira. La consecuencia es que tras transponer normalmente querrás renombrar a mano la primerísima celda, porque ahora etiqueta una fila de cabecera hecha de tus antiguas etiquetas de fila y no una columna de nada.
- ¿Qué tamaño de archivo puedo transponer?
- La zona de arrastre acepta archivos de hasta 2 MB, y todo se ejecuta en tu navegador y no en un servidor, así que nada se sube. El límite real de una transposición no es el tamaño sino la forma: transponer convierte filas en columnas, así que un archivo de 50.000 filas pasa a ser un archivo de 50.000 columnas. Es CSV válido y la herramienta lo producirá, pero muy pocos programas lo abren con comodidad: los límites de columnas de las hojas de cálculo están en las decenas de miles, y un editor de texto te dará una línea de varios megabytes de ancho. Si tu tabla es alta y no ancha, pregúntate si de verdad quieres una transposición, o si lo que necesitas es un pivote que agrupe las filas en un puñado de columnas.
- ¿Por qué mi archivo transpuesto tiene una columna llena de nada?
- Casi con seguridad porque la entrada tenía una línea en blanco donde ahora está esa columna. Una línea en blanco se analiza como una fila que contiene una celda vacía, y tras la rotación esa fila es una columna. Cuenta desde la izquierda: la posición de la columna vacía coincide con la posición de la línea en blanco contando desde arriba. Lo mismo ocurre con una fila que solo contiene delimitadores, como ,,, que son cuatro celdas vacías y no una línea en blanco pero da el mismo resultado a la vista. Quita antes las líneas vacías de tu entrada: un salto de línea final al terminar el archivo está contemplado y no causa esto, pero una línea en blanco en medio sí.
- ¿Puedo transponer solo una parte del archivo?
- En un solo paso no: el transponedor toma toda la entrada. La vía práctica es cortar primero y transponer después. Pega solo el bloque que quieras, o saca las columnas que te importan con un extractor de columnas y transpón el resultado, que además suele ser lo que querías: una tabla ancha transpuesta entera es ilegible, mientras que cuatro columnas elegidas transpuestas en cuatro filas son un resumen que cabe en un mensaje. Si el archivo tiene varios bloques separados por líneas en blanco, recuerda que esas líneas se convierten en columnas vacías, así que separa los bloques en entradas distintas en vez de transponerlos todos juntos.
- Necesito una columna por mes a partir de una tabla con una fila por mes. ¿Eso es una transposición?
- Depende de una sola cosa: si el mes aparece más de una vez. Si cada mes tiene exactamente una fila, entonces sí: la tabla ya tiene la forma correcta y girarla te da lo que quieres. Si un mes aparece varias veces porque hay una segunda dimensión en la tabla, como una región o un producto, entonces no. Girar eso te deja etiquetas de mes repetidas arriba y te deja tan lejos de la respuesta como estabas. Lo que necesitas ahí es un pivote: elegir la clave que pasa a ser las filas, la etiqueta cuyos valores distintos pasan a ser las columnas, y el valor que aterriza en las celdas, y decidir qué ocurre cuando dos filas de origen caen en la misma celda: sumarlas, promediarlas o rechazar. Un transponedor no tiene ninguna de esas tres entradas y no puede pedirlas.
Artículos que podrían interesarte
Todas las guías →Herramientas relacionadas
Esto describe lo que hacen estos conversores hoy, comprobado ejecutándolos, y no lo que una norma obligue a hacer a un conversor. El CSV no tiene norma prescriptiva: el RFC 4180 es informativo y describe una práctica habitual, así que dos herramientas aparentemente correctas pueden discrepar sobre el mismo archivo sin que ninguna se equivoque. El aplanado, la detección de tipos y la de arrays son convenciones, no reglas. Antes de convertir datos que no puedas volver a exportar, pasa primero por una copia y compara el número de filas y columnas en ambos extremos.
Fuentes
- IETF — RFC 4180, Common Format and MIME Type for Comma-Separated Values (CSV) Files — section 2 rule 4 on each record containing the same number of fields, and rule 6 on quoting a field that holds a delimiter or a line break
- W3C — Model for Tabular Data and Metadata on the Web — the abstract model of a table as rows and columns of cells, and the annotations that a bare CSV file cannot carry
- Journal of Statistical Software — Hadley Wickham, Tidy Data, volume 59 issue 10, 2014 — the distinction between long and wide layouts and why reshaping between them is a grouping operation rather than a rotation (open access)
- pandas — User guide, Reshaping and pivot tables — pivot, pivot_table and melt, and the aggregation function a pivot needs when two source rows fall into the same cell
¿Has detectado un error en este artículo?