如何解决如何使用CSV命令行工具在CSV中“部分转置和复制”行
我一次又一次有这样的CSV文件(格式为表格):
| PRODUCT | REGION | COMMENT | SALES1 | SALES2 | SALES3 |
| ------- | -------- | -------- | -------- | ------- | ------ |
| Orange | Valencia | good | Peter | | |
| Apple | Bavaria | mediocre | Maria | Walter | |
| Dates | Dubai | good | Angelica | William | Jessie |
在此CSV中,我想将最后三列转置为一列,同时复制其他列的信息,以便结果看起来像这样:
| PRODUCT | REGION | COMMENT | SALES |
| ------- | -------- | -------- | -------- |
| Orange | Valencia | good | Peter |
| Apple | Bavaria | mediocre | Maria |
| Apple | Bavaria | mediocre | Walter |
| Dates | Dubai | good | Angelica |
| Dates | Dubai | good | William |
| Dates | Dubai | good | Jessie |
我当然可以编写一些(Python)脚本来执行此操作,但是我的问题是:
这是对表/ CSV /矩阵的某种标准操作,并且可以是任何现有的CSV命令行工具(例如csvkit
,miller
,{{1} }等)可以直接使用吗?
解决方法
在Miller(https://github.com/johnkerl/miller)中从
开始PRODUCT,REGION,COMMENT,SALES1,SALES2,SALES3
Orange,Valencia,good,Peter,Apple,Bavaria,mediocre,Maria,Walter,Dates,Dubai,Angelica,William,Jessie
并运行
mlr --csv reshape -r "SALE" -o item,value then filter '$value=~".+"' then cut -x -f item then rename value,SALES input.txt
您将拥有
+---------+----------+----------+----------+
| PRODUCT | REGION | COMMENT | SALES |
+---------+----------+----------+----------+
| Orange | Valencia | good | Peter |
| Apple | Bavaria | mediocre | Maria |
| Apple | Bavaria | mediocre | Walter |
| Dates | Dubai | good | Angelica |
| Dates | Dubai | good | William |
| Dates | Dubai | good | Jessie |
+---------+----------+----------+----------+
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。