【发布时间】:2020-08-07 03:44:09
【问题描述】:
我有一个结果的 CSV,它查看图片并猜测图片是否包含某个属性。在这种情况下,如果图片中的主题是男性或女性。
我正在使用 javascript/node 将此 CSV 转换为 JSON,我想获取属性及其值并将它们放入每个 pciture 一个对象内的数组中。现在,CSV 度量和属性的每一行,但这意味着每个图像至少有两行。
简单版的csv:
path, detect_id, score, x-coord, y-coord, w-coord, h-coord, attribute, value
picture_1.jpg,0,1.44855535,74,54,181,181,genderf,0.024716798
picture_1.jpg,0,1.44855535,74,54,181,181,genderm,0.975283206
我可以将此 CSV 转换为 JSON,然后至少按它们的路径/文件名将项目组合在一起。
但这会留下很多冗余信息,我想将我的属性和它们的值放在主对象内的嵌套对象中。
喜欢:
Path: picture_1.jpg
Attributes: [genderf: 0.025,
genderm: 0.985]
other_info: other info
现在我正在使用 lodash 创建如下所示的对象,但是如果我尝试映射属性,我最终会推出除最后一个元素之外的所有元素。
所以我可以使用以下代码创建对象。
var result =
_([...arr1, ...arr2])
.concat()
.groupBy("path")
.value();
其中 arr1 和 arr2 是来自输出 csv 的一行的数据。除了属性及其值之外,所有信息都是相同的。
这让我得到了这个对象:
{
"picture_1.jpg": [
{
"path": "picture_1.jpg",
"detect_id,": "0",
"score,": "1.44855535",
"coordinates": [
{
"x,": "74",
"y,": "54",
"w": "181",
"h": "181"
}
],
"attribute": "genderf",
"value": "0.024716798"
},
{
"path": "picture_1.jpg",
"detect_id,": "0",
"score,": "1.44855535",
"coordinates": [
{
"x,": "74",
"y,": "54",
"w": "181",
"h": "181"
}
],
"attribute": "genderm",
"value": "0.975283206"
}
]
}
这至少根据路径标题将图片组合在一起,但很多信息是多余的,这只是衡量一个属性。
【问题讨论】:
标签: javascript node.js json csv lodash