Python OpenRefine:创建列的移位副本
我想知道OpenRefine是否允许您在创建新列时访问其他行中的数据。我怀疑它不是(这将是一个明智的设计原则),但可能有一个黑客围绕 下面是一个可以执行的示例:将一列移动一行 我有下表:Python OpenRefine:创建列的移位副本,python,openrefine,grel,Python,Openrefine,Grel,我想知道OpenRefine是否允许您在创建新列时访问其他行中的数据。我怀疑它不是(这将是一个明智的设计原则),但可能有一个黑客围绕 下面是一个可以执行的示例:将一列移动一行 我有下表: ╔═════╦════════╗ ║ row ║ Model ║ ╠═════╬════════╣ ║ 1 ║ Quest ║ ║ 2 ║ DF ║ ║ 3 ║ Waw ║ ║ 4 ║ Strada ║ ╚═════╩════════╝ 我想得到以下结果: ╔═════╦══
╔═════╦════════╗
║ row ║ Model ║
╠═════╬════════╣
║ 1 ║ Quest ║
║ 2 ║ DF ║
║ 3 ║ Waw ║
║ 4 ║ Strada ║
╚═════╩════════╝
我想得到以下结果:
╔═════╦════════╦══════════╗
║ row ║ Model ║ Previous ║
╠═════╬════════╬══════════╣
║ 1 ║ Quest ║ ║
║ 2 ║ DF ║ Quest ║
║ 3 ║ Waw ║ DF ║
║ 4 ║ Strada ║ Waw ║
╚═════╩════════╩══════════╝
现在看来,似乎没有任何变量可以让您访问当前行或记录之外的信息,因此我想知道这种操作是否可行。不幸的是,Open Refine中没有“column”变量。一种可能的解决方法是将所有数据集转换为一条记录,然后应用一点Python/Jython 例如:
data = row['record']['cells']['Model']['value']
for i, el in enumerate(data):
if value == el and i !=0:
return data[i - 1]
放映:
我不知道是否可以用GREL解决问题。谢谢!我认为这是一个非常明智的设计决策,因为它确保了操作可以独立于上下文应用于行。这意味着,例如,可以使用pyrefine之类的东西对数据流(某种意义上,一个逐渐被发现的表)应用一组OpenRefine操作。我认为这是很多维基数据机器人非常强大的范例。