【问题标题】:OpenRefine: create a shifted copy of a columnOpenRefine:创建列的移动副本
【发布时间】:2018-03-04 21:22:17
【问题描述】:

我想知道 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 似乎没有任何变量可以让您访问当前行或记录之外的信息,所以我想知道这种操作是否可行。

【问题讨论】:

    标签: python openrefine grel


    【解决方案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]
    

    截图:

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

    【讨论】:

    • 谢谢!我认为这是一个非常明智的设计决策,因为它确保操作可以独立于上下文应用于行。这意味着,例如,人们可以使用 pyrefine 之类的东西对数据流(从某种意义上说是逐渐发现的表)应用一组 OpenRefine 操作。我认为对于很多 Wikidata 机器人来说,这是一个非常强大的范例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多