我有一个CSV,如下所示:
created,id,value
2022-12-16 11:55,58,10
2022-12-16 11:55,59,2
2022-12-16 11:50,58,11
2022-12-16 11:50,59,3
2022-12-16 11:50,60,7
我想解析它,这样就得到了以下结果,将id设置为列并按日期分组:
created,58,59,60
2022-12-16 11:55,10,2,nan
2022-12-16 11:50,11,3,7
缺失值设置为nan,每个ID在每个日期最多出现一次
我该怎么做呢?如果用jq更容易的话,我还有第一个JSON等价的CSV
JSON由类似的元素组成:
{
"created": "2022-12-16 09:15",
"value": "10.4",
"id": "60"
}
3条答案
按热度按时间zbdgwd5y1#
下面是我在jq中基于JSON输入流的实现方式:
然后,使用
@csv
内置函数,将值括在引号中,并为缺少的组合生成空值:x一个一个一个一个x一个一个二个x
Demo
或者通过
map
ping和join
ing手动生成nan
和,
:一个三个三个一个
Demo
8aqjt8rx2#
试用脚本:
9gm1akwq3#
使用强大的Miller(版本〉= 6),运行
你得到
这里的核心命令是
reshape -s id,value
,用于将输入从长结构转换为宽结构。