CSV 转置 — 在浏览器中互换 CSV 数据的行与列
转置 CSV 数据 —— 交换行与列。实时预览,完全在浏览器中运行。无上传、无账号、无限制。
CSV Transposer
Transpose CSV data — swap rows with columns. The first row becomes the first column and vice versa. Works entirely in your browser.
CSV 转置属于那种听起来像一行代码能搞定、实际理解矩阵数学后也确实如此的操作:第一行变成第一列,第二行变成第二列,位于 (row, column) 的单元格移到 (column, row)。整个算法就这么简单。但这么个本质 5 行 Python 脚本就能完成的事情,确实值得做一个专门的工具,原因在于那些恼人的边界条件 —— 行长度不齐、表头处理、分隔符保留 —— 想做对并不容易;而做错的结果(一份表头错位的转置 CSV)在 code review 里很难一眼看出来。
转置操作里「不那么显然」的一点在于表头的处理。CSV 是一个扁平网格,第一行可选地承担标签的角色。一旦转置,第一行就成了第一列,原本的表头行也随之成为一列标签。对大多数数据 —— 按月销量、各学生分数、各城市温度 —— 而言,第一行是有意义的表头,转置后的版本正是你想要的。但对另一些数据 —— 时间序列测量,每行一条记录、每列一个传感器 —— 来说,第一行根本不是表头,转置后的版本需要不同的形状。本工具的默认值遵循标准约定,切换开关则是为了应对不那么常见的情形。
最后一步的取舍:如果目标是喂给一个期望纵向类别数据的图表,转置就是正确动作;如果目标是数据库导入,而 schema 需要按行组织数据,那就先转置再导入;如果目标是一张能放进打印页的更宽表格,转置就反了 —— 你需要更少的列而不是更多。本工具专攻的就是 CSV 中互换行列这个具体场景;至于其他表格变换(pivot、unpivot、melt、stack),请用专门支持这些操作的工具(电子表格、pandas,或 miller)。
使用方法
粘贴你的 CSV 数据
把 CSV 拖入输入区,或加载一个 .csv 文件。工具会自动检测分隔符(逗号、分号、制表符),默认将第一行作为表头。预览会并排展示原始网格和转置后的网格。
调整表头行为
可以切换是否将第一行作为转置输出的列表头。对于以列命名(月度销量、各学生分数)的数据,默认设置即可;对于以行命名的数据,关闭该选项。
复制或下载结果
把转置后的 CSV 复制到剪贴板,或下载为 .csv 文件。输出沿用输入的分隔符 —— 逗号还是逗号,分号还是分号。
常见问题
什么时候需要转置 CSV 数据?
常见三种场景:电子表格把分类放在列里(一月、二月、三月),而你需要把它们作为行用于图表或数据库导入;一份宽导出对打印机或查看器来说太宽,需要旋转 90 度;数据管道期望的方向与源数据相反。
表头行会怎样处理?
默认情况下,输入的第一行会成为输出的第一列。位于 (0,0) 的单元格 —— 即原始表头的第一个单元格 —— 会成为新的列表头。这与标准矩阵转置一致,通常正是你想要的结果。
单元格的值会被重新格式化吗?
不会 —— 转置是结构变化,不是数据变化。原始数据中的每个值都会在输出中按转置后的位置出现一次。工具不会重新解析数字、日期或布尔值,所有值都按原样复制。
如果各行长度不一致会怎样?
工具会在转置前把较短的行用空单元格补齐到最长行的宽度。转置输出的行长度统一等于原始的行数。源数据中的空单元格也会出现在输出中相应位置,仍然是空单元格。
能转置特别大的 CSV 吗?
可以,但内存占用等于输入行数乘以输入列数。1 万行 × 100 列的 CSV 是 100 万个单元格,浏览器扛得住;10 万行 × 1000 列的 CSV 可能会耗尽标签页的内存。
限制说明
- 内存扩展性转置前需要把完整输入加载到内存。超大规模输入(数百万单元格)可能耗尽浏览器标签页内存。流水线级别的转置请用 CLI 工具,如 `miller`,或 `csvkit` 的 `csvjson` 配合 JSON 转 CSV 工具使用。
- 不支持公式包含公式的 CSV 单元格(=SUM(A1:A10)、=AVERAGE(B:B))会按纯文本形式转置。公式中的单元格引用不会因位置变化而调整 —— 转置后的输出会指向错误的单元格。
- 不做聚合转置不会对值进行聚合、求和或求平均。如果同一列中有两个单元格的值相同,转置后输出中依然两个都存在。需要聚合时,请先转置,再用透视工具或电子表格处理。
平台说明
- macOS
- Numbers 和 Excel 都提供「选择性粘贴 > 转置」用于就地互换行列。本浏览器工具适合不值得为此专门打开电子表格的一次性转置场景,也适合从聊天或邮件中粘贴的内容。
- Windows
- Excel 的「选择性粘贴 > 转置」在电子表格内同样能完成这件事。本浏览器工具更适合处理 CSV 文本 —— 粘贴到 Excel、转置、再存为 CSV 比起直接用本工具要麻烦得多。
- Linux
- 最接近的 CLI 等价方案是 `miller`(mlr):`mlr --csv reshape -r '' -o wide input.csv`,或者用 `pandas` 库写一段简短的 Python 脚本。本浏览器工具适合从终端以外的任何地方复制过来的内容。
- Web
- 完全在客户端运行。页面加载后即可离线使用。转置输出是标准 CSV,沿用输入的分隔符 —— 无需任何转换即可粘贴到任何电子表格或数据管道中。