Vega-lite中能否获取数据集列名组成的数组,类似pandas的df.columns
解答
首先明确:Vega/Vega-Lite 目前没有提供和 pandas df.columns 完全对等的原生属性,不过可以通过组合内置转换功能实现获取列名数组的需求。
针对你给出的样例数据集:
{"data": { "values" : [{"a":4, "b":5},{"a":6, "b":7}] }}
可以通过以下两种方式得到目标数组["a","b"]:
- 方式1:通过
keys()表达式直接提取
使用 calculate 转换调用Vega内置的keys()函数,即可获取单条记录的所有字段名,再做简单聚合即可得到全量列名数组:
转换后得到的{ "data": { "values" : [{"a":4, "b":5},{"a":6, "b":7}] }, "transform": [ {"calculate": "keys(datum)", "as": "row_columns"}, {"aggregate": [{"op": "max", "field": "row_columns", "as": "all_columns"}]} ] }all_columns字段就是你需要的列名数组。 - 方式2:适配fold转换的批量处理技巧
如果你是要对大型数据集做fold转换,不想手动枚举所有列名,可以先通过上述方法获取列名数组,再传入fold转换的字段参数即可,无需手动整理所有列名。
注意:如果你的数据存在不同行字段不一致的情况,可以先合并所有行的
keys(datum)结果再做去重,就能得到完整的列名集合。
内容的提问来源于stack exchange,提问作者csaladenes
相关产品推荐
相关产品推荐

