Eine Tabelle transponieren, deren Zeilen Spalten hätten sein sollen
Veröffentlicht am 22.7.2026 · 12 Min. Lesezeit · Entwickler-Tools
Daniel Okonkwo — Front-end-Entwickler und Tech-Redakteur bei OneKitly
Web-Performance · Dateiformate
Anhand von 4 Quellen geprüft
Transponieren vertauscht Zeilen und Spalten: Zelle [z][s] wird zu Zelle [s][z], sonst ändert sich nichts. Die Kopfzeile wird zur ersten Spalte, also kommt Name,Q1,Q2,Q3 über Alice,10,20,30 und Bob,5,6,7 als Name,Alice,Bob, dann Q1,10,5, dann Q2,20,6, dann Q3,30,7 zurück — vier Zeilen, drei Spalten, und die Beschriftungen laufen jetzt am linken Rand nach unten statt oben quer. Ungleich lange Zeilen werden aufgefüllt, nie abgeschnitten: Die Ausgabe hat so viele Zeilen, wie die breiteste Eingabezeile Zellen hatte, und eine kurze Zeile steuert leere Zeichenketten bei. Aus a,b,c über 1,2 und 3,4,5,6 werden vier Ausgabezeilen, die letzte davon ,,6 — eine namenlose Zeile mit dem Wert, den die Kopfzeile nie vorgesehen hat. Die Zitierung wird von Grund auf neu gemacht, eine Zelle mit dem Trennzeichen oder einem Zeilenumbruch kommt also korrekt zitiert zurück. Es gibt überhaupt keine Typumwandlung: 007 bleibt 007, 1.0 bleibt 1.0, true bleibt true, denn das Werkzeug verschiebt nur Text. Das Trennzeichen wird am ersten Datensatz erkannt, und die Ausgabe nutzt dasselbe — eine Semikolondatei transponiert zu einer Semikolondatei. Zwei Dinge im Auge behalten. Eine Leerzeile in der Eingabe wird in der Ausgabe zu einer vollständig leeren Spalte, denn eine Leerzeile ist eine Zeile mit einer leeren Zelle. Und Transponieren ist kein Pivotieren: Eine Tabelle im Langformat mit wiederholtem Schlüssel kommt mit doppelten Spaltenüberschriften zurück statt umgeformt, denn das Drehen einer Tabelle gruppiert nichts.
Was aus der Kopfzeile wird, was aus ungleich langen Zeilen wird, was aus Typen wird — und die eine Sache, mit der Transponieren regelmäßig verwechselt wird und die es nicht kann.
Was aus der Kopfzeile wird
Nichts Besonderes, und genau das sollte man verstehen, bevor man das Ergebnis nutzt. Das Werkzeug hat keine Ahnung, dass deine erste Zeile eine Kopfzeile ist. Es liest ein Raster von Zellen, schreibt dasselbe Raster mit vertauschten Achsen und hört auf. Aus Name,Q1,Q2,Q3 über Alice,10,20,30 und Bob,5,6,7 werden also vier Zeilen: Name,Alice,Bob, dann Q1,10,5, dann Q2,20,6, dann Q3,30,7. Deine Spaltenbeschriftungen sind jetzt die erste Zelle jeder Zeile, und deine Zeilenbeschriftungen — Alice und Bob — sind jetzt die Kopfzeile.
Die allererste Zelle der Tabelle, die Name hieß, landet in der Ecke der Ausgabe als Beschriftung einer Kopfzeile, die nichts Nützliches mehr beschriftet. Das ist bei einer transponierten Tabelle normal, und deshalb benennen die meisten sie danach von Hand um — von Name in etwas wie Kennzahl oder Zeitraum, je nachdem, was jetzt links hinunterläuft. Wichtig ist: Was die Datei als Nächstes liest, hält die erste Zeile weiterhin für eine Kopfzeile, und diese erste Zeile ist jetzt die Liste deiner früheren Zeilenbeschriftungen. Gibst du das Ergebnis in einen CSV-zu-JSON-Konverter, lauten deine Schlüssel Name, Alice und Bob.
Ungleiche Zeilen: es füllt auf und schneidet nie ab
Ein echter Export ist nicht immer rechteckig. Eine Zeile kann kurz sein, weil ein letztes Feld leer war und der Schreiber früh aufhörte; eine Zeile kann lang sein, weil ein nicht maskiertes Trennzeichen ein Feld zerteilt hat. Beides kommt vor, und ein Transponierer muss die Höhe der Ausgabe festlegen. Dieser nimmt die breiteste Zeile: Die Zahl der Ausgabezeilen entspricht der Zellenzahl der längsten Eingabezeile, und jede Position, die keine Eingabezeile gefüllt hat, wird zur leeren Zeichenkette.
Die Vorführung ist kurz. Nimm die Kopfzeile a,b,c über den zwei Zeilen 1,2 und 3,4,5,6. Die breiteste Zeile hat vier Zellen, die Ausgabe hat also vier Zeilen: a,1,3, dann b,2,4, dann c,,5, dann ,,6. Lies diese letzte Zeile genau. Sie trägt den Wert 6, echte Daten aus der Eingabe, und ihre erste Zelle ist leer, weil die Kopfzeile nur drei Namen hatte. Das Werkzeug sagt dir etwas Wahres und Nützliches — in einer Zeile gab es ein viertes Feld, und nichts hat es benannt — und es sagt es dir, indem es unten eine namenlose Zeile stehen lässt, statt den Beweis zu löschen. Abschneiden hätte genau die Zelle weggeworfen, die belegt, dass deine Datei ein Zitierproblem hat.
Daraus folgt ein Nebeneffekt. Eine ungleiche Tabelle zweimal zu transponieren ergibt nicht das Original: Der erste Durchgang füllt die Löcher, der zweite baut also ein Rechteck. a,b,c über 1,2 und 3,4,5,6 kommt als a,b,c, über 1,2,, und 3,4,5,6 zurück — gleiche Werte, überall vier Spalten, hinten Leerstellen, wo das Original kurz war. Bei einer rechteckigen Tabelle ist die doppelte Transposition exakt und liefert die Ausgangsdatei Byte für Byte zurück, sofern die Zitierung schon minimal war.
Typen: Das Werkzeug tut nichts, und dorthin wandert das Risiko
In diesem Werkzeug gibt es nirgends eine Typumwandlung. Es parst Zellen als Text, verschiebt sie und schreibt sie als Text zurück. 007 bleibt 007, 1.0 bleibt 1.0, true bleibt true, und ein Datum bleibt die Zeichenkette, die es war. Nichts wird gerundet, nichts umgedeutet, und eine führende Null kann nicht verloren gehen, weil nie eine Zahl existiert.
Das Risiko liegt vollständig weiter unten, und die Transposition erzeugt es. Vorher war jede Spalte homogen: eine Spalte Datumsangaben, eine Spalte Beträge, eine Spalte Regionsnamen. Danach ist jede Spalte eine Mischung, denn sie enthält je eine Zelle aus jeder ursprünglichen Spalte. Öffne das Ergebnis in einer Tabellenkalkulation, und das Typraten läuft spaltenweise über Daten, die keine Spaltentypen mehr haben. Die Beschriftung in der ersten Zelle ist Text und der Rest sind Zahlen, also wird eine Zahlenspalte als Text gelesen, oder eine einzelne Zelle, die wie ein Datum aussieht, wird in eines verwandelt. Das ist nicht das Werk des Transponierers, aber seine Folge, und deshalb lautet der praktische Rat: in einem Textwerkzeug transponieren und das Ergebnis mit allen Spalten auf Text öffnen, statt eine Tabellenkalkulation raten zu lassen.
Wo das vorkommt, und die eine Aufgabe, die es nicht kann
Drei Situationen machen das meiste aus. Eine im Langformat exportierte Zeitreihe, eine Zeile je Periode, während das Diagramm, das du baust, eine Spalte je Periode will. Ein Umfrage-Export, in dem die Fragen Zeilen und die Befragten Spalten sind — oder umgekehrt, je nach schreibendem Werkzeug. Und ein Bericht, bei dem jemand die Pivot-Tabelle andersherum gebaut und verschickt hat, sodass die Datei in deinem Posteingang die Perioden an der Seite und die Kennzahlen oben hat, während alles andere in deiner Kette das Gegenteil erwartet. In allen dreien ist die Abhilfe eine echte Transposition: Die Daten haben schon die richtige Form, sie sind nur gedreht.
Es gibt eine vierte Situation, die genauso aussieht und keine ist, und die kostet einen Nachmittag. Eine Tabelle im Langformat hat eine Schlüsselspalte, die sich wiederholt: Datum, Region, Umsatz, mit zwei Zeilen für Januar, weil es zwei Regionen gibt. Sie zu transponieren formt sie nicht um. Gib dem Werkzeug Date,Region,Sales über 2026-01,North,120, 2026-01,South,90 und 2026-02,North,140, und die Ausgabe sind drei Zeilen: Date,2026-01,2026-01,2026-02, dann Region,North,South,North, dann Sales,120,90,140. Die erste Zeile hat jetzt eine doppelte Überschrift, und die Tabelle ist immer noch lang — ein Eintrag je Beobachtung, nur quer geschrieben. Gewollt war ein Pivot: nach Datum gruppieren, die Regionen über die Spalten verteilen und die Umsätze in die Zellen setzen. Das ist eine Aggregation, keine Drehung, und dafür braucht es ein Werkzeug, das weiß, welche Spalte der Schlüssel, welche die Beschriftung und welche der Wert ist.
Drei stille Verhaltensweisen, die man kennen sollte
Eine Leerzeile in deiner Eingabe wird in der Ausgabe zu einer leeren Spalte. Das ist kein Fehler und folgt direkt aus der Definition: Eine Leerzeile ist eine Zeile mit einer leeren Zelle, nach der Drehung also eine Spalte mit einer leeren Zelle plus Auffüllung. Gib dem Werkzeug a,b, dann 1,2, dann eine Leerzeile, dann 3,4, und du bekommst a,1,,3 über b,2,,4 — die dritte Spalte ist die Leerzeile. Da Menschen Daten häufiger als gedacht mit Leerzeilen zwischen Blöcken einfügen, ist das die häufigste Überraschung dieses Werkzeugs. Entferne leere Zeilen vor dem Transponieren, wenn du sie nicht gemeint hast.
Das Trennzeichen kommt heraus, wie es hineinging. Es wird am ersten Datensatz erkannt und für die Ausgabe wiederverwendet, eine Semikolondatei transponiert also zu einer Semikolondatei und eine Tab-Datei zu einer Tab-Datei. Es gibt keine Option, es unterwegs zu wechseln — willst du ein anderes, lass danach den Trennzeichen-Konverter laufen. Die Folgerung: Eine falsche Erkennung ruiniert das Ergebnis, statt es nur zu verschlechtern. Erzwinge das Komma bei einer Datei, die wirklich Semikolons nutzt, und jede Zeile wird eine einzige Zelle, die ganze Tabelle transponiert also zu einer einzigen Zeile.
Die Zitierung wird neu gebaut, nicht übernommen. Jede Zelle wird beim Schreiben neu geprüft und nur zitiert, wenn sie jetzt das Trennzeichen, ein Anführungszeichen oder einen Zeilenumbruch enthält. Eine Zelle mit y,z war in der Eingabe zitiert und ist es in der Ausgabe wieder; eine grundlos zitierte Zelle kommt nackt zurück. Zellen mit eingebetteten Zeilenumbrüchen überleben unversehrt, weiterhin zitiert, weiterhin über zwei physische Zeilen der Datei verteilt. Die Ausgabe ist also gültiges CSV, auch wenn die Eingabe stärker zitiert war als nötig — und ein byteweiser Vergleich einer doppelten Transposition weicht ab, wenn das Original überflüssige Anführungszeichen trug.
| Eingabe | Ausgabe | Was das heißt |
|---|---|---|
| Name,Q1,Q2,Q3 / Alice,10,20,30 / Bob,5,6,7 | Name,Alice,Bob / Q1,10,5 / Q2,20,6 / Q3,30,7 | Die Kopfzeile wird zur ersten Spalte; die Zeilenbeschriftungen werden zur Kopfzeile |
| a,b,c / 1,2 / 3,4,5,6 | a,1,3 / b,2,4 / c,,5 / ,,6 | Es füllt bis zur breitesten Zeile auf und schneidet nie ab; die letzte Zeile bleibt namenlos, weil die Kopfzeile kurz war |
| a,b,c / 1,2,3 / x,"y,z",w | a,1,x / b,2,"y,z" / c,3,w | Die Zitierung wird neu gebaut: Eine Zelle mit dem Trennzeichen wird an ihrer neuen Stelle neu zitiert |
| a,b / 1,2 / (eine Leerzeile) / 3,4 | a,1,,3 / b,2,,4 | Eine Leerzeile ist eine Zeile mit einer leeren Zelle, nach der Drehung also eine leere Spalte |
| 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 | Transponieren ist kein Pivotieren: Der wiederholte Schlüssel erzeugt eine doppelte Überschrift, und die Tabelle bleibt lang |
Häufige Fragen
- Wird die erste Zeile als Kopfzeile behandelt?
- Nein, und es gibt keine Option, das zu behaupten. Das Werkzeug liest ein Raster und dreht es; jede Zeile ist eine Zeile. Das ist das gewünschte Verhalten, denn ein Transponierer, der die erste Zeile besonders behandelte, müsste entscheiden, was mit ihr geschieht — oben lassen, was keine Transposition wäre, oder verschieben und so tun, als sei sie weiter eine Kopfzeile, was eine Lüge wäre. Die Folge: Nach dem Transponieren willst du meist die allererste Zelle von Hand umbenennen, denn sie beschriftet jetzt eine Kopfzeile aus deinen früheren Zeilenbeschriftungen und keine Spalte von irgendetwas.
- Wie groß darf die Datei sein, die ich transponiere?
- Der Ablagebereich nimmt Dateien bis 2 MB, und alles läuft in deinem Browser statt auf einem Server, es wird also nichts hochgeladen. Die echte Grenze einer Transposition ist nicht die Größe, sondern die Form: Transponieren macht aus Zeilen Spalten, eine Datei mit 50 000 Zeilen wird also eine Datei mit 50 000 Spalten. Das ist gültiges CSV, und das Werkzeug erzeugt es, aber sehr wenige Programme öffnen es bequem — Spaltengrenzen von Tabellenkalkulationen liegen typischerweise im Zehntausenderbereich, und ein Texteditor gibt dir eine Zeile von mehreren Megabyte Breite. Ist deine Tabelle hoch statt breit, frage dich, ob du überhaupt eine Transposition willst oder eher ein Pivot, das die Zeilen auf eine Handvoll Spalten zusammenfasst.
- Warum hat meine transponierte Datei eine völlig leere Spalte?
- Fast sicher, weil die Eingabe an der Stelle, an der jetzt diese Spalte steht, eine Leerzeile hatte. Eine Leerzeile wird als Zeile mit einer leeren Zelle geparst, und nach der Drehung ist diese Zeile eine Spalte. Zähle von links: Die Position der leeren Spalte entspricht der Position der Leerzeile von oben gezählt. Dasselbe passiert bei einer Zeile aus lauter Trennzeichen wie ,,, — das sind vier leere Zellen statt einer Leerzeile, sieht aber gleich aus. Entferne zuerst die leeren Zeilen aus deiner Eingabe: Ein abschließender Zeilenumbruch ganz am Dateiende wird behandelt und löst das nicht aus, eine Leerzeile in der Mitte schon.
- Kann ich nur einen Teil der Datei transponieren?
- Nicht in einem Schritt — der Transponierer nimmt die ganze Eingabe. Der praktische Weg ist: erst schneiden, dann transponieren. Füge nur den gewünschten Block ein, oder hole dir die interessierenden Spalten mit einem Spaltenextraktor und transponiere das Ergebnis — meist ist das ohnehin, was du wolltest: eine breite Tabelle vollständig transponiert ist unlesbar, während vier ausgewählte, in vier Zeilen transponierte Spalten eine Zusammenfassung ergeben, die in eine Nachricht passt. Hat die Datei mehrere durch Leerzeilen getrennte Blöcke, denk daran, dass diese Leerzeilen zu leeren Spalten werden: Trenne die Blöcke in getrennte Eingaben, statt alle zusammen zu transponieren.
- Ich brauche eine Spalte je Monat aus einer Tabelle mit einer Zeile je Monat. Ist das eine Transposition?
- Es hängt an einer Sache: Kommt der Monat mehr als einmal vor? Hat jeder Monat genau eine Zeile, dann ja — die Tabelle hat schon die richtige Form, und das Drehen liefert, was du willst. Kommt ein Monat mehrfach vor, weil es eine zweite Dimension gibt, etwa eine Region oder ein Produkt, dann nein. Das Drehen liefert dir wiederholte Monatsbeschriftungen oben und lässt dich genauso weit von der Antwort entfernt wie zuvor. Was du dort brauchst, ist ein Pivot: den Schlüssel wählen, der zu den Zeilen wird, die Beschriftung, deren verschiedene Werte zu den Spalten werden, und den Wert, der in den Zellen landet — und entscheiden, was passiert, wenn zwei Quellzeilen in derselben Zelle landen: summieren, mitteln oder ablehnen. Ein Transponierer hat keine dieser drei Angaben und kann nicht danach fragen.
Artikel, die dich interessieren könnten
Alle Ratgeber →Ähnliche Tools
Das hier beschreibt, was diese Konverter heute tun — geprüft, indem sie ausgeführt wurden — und nicht, was ein Standard einem Konverter vorschreibt. CSV hat keinen normativen Standard: RFC 4180 ist Informational und beschreibt gängige Praxis, weshalb zwei korrekt wirkende Werkzeuge bei derselben Datei auseinanderlaufen können, ohne dass eines falsch liegt. Abflachen, Typerkennung und Array-Erkennung sind Konventionen, keine Regeln. Bevor du Daten konvertierst, die du nicht neu exportieren kannst, lauf zuerst über eine Kopie und vergleiche Zeilen- und Spaltenzahl an beiden Enden.
Quellen
- 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
Hast du einen Fehler in diesem Artikel entdeckt?