OpenRefine:创建列的移位副本

时间:2017-09-23 11:45:58

标签: python openrefine grel

我想知道OpenRefine是否允许您在创建新列时访问其他行中的数据。我怀疑它没有(这将是一个理智的设计原则),但可能有一个黑客围绕着。

以下是人们可能想要做的一个示例:将列移动一行。

我有下表:

╔═════╦════════╗
║ row ║ Model  ║
╠═════╬════════╣
║   1 ║ Quest  ║
║   2 ║ DF     ║
║   3 ║ Waw    ║
║   4 ║ Strada ║
╚═════╩════════╝

我想获得以下结果:

╔═════╦════════╦══════════╗
║ row ║ Model  ║ Previous ║
╠═════╬════════╬══════════╣
║   1 ║ Quest  ║          ║
║   2 ║ DF     ║ Quest    ║
║   3 ║ Waw    ║ DF       ║
║   4 ║ Strada ║ Waw      ║
╚═════╩════════╩══════════╝

查看https://github.com/OpenRefine/OpenRefine/wiki/Variables似乎没有任何变量可以让您访问当前行或记录之外的信息,所以我想知道这种操作是否可行。

1 个答案:

答案 0 :(得分:1)

不幸的是,没有"列" Open Refine中的变量。一种可能的解决方法是将所有数据集转换为单个记录,然后应用一些Python / Jython。

示例:

data = row['record']['cells']['Model']['value']
for i, el in enumerate(data):
    if value == el and i !=0:
        return data[i - 1]

截屏:

enter image description here

我不知道GREL中的解决方案是否可行。