OpenRefine — замена строкового значения в одном столбце на основе значения в другом

#data-cleaning #openrefine

#очистка данных #openrefine открыть

Вопрос:

У меня есть большой CSV-файл, который содержит информацию о том, как разделяется коллекция. Например, один столбец содержит информацию о категории верхнего уровня, другой — о подкатегории, и их может быть довольно много в зависимости от подклассификаций.

В OpenRefine они выглядят как (например):

 ||field 1        || field 2                           || field 3
||I am a section || I am a section with a subsection  ||  I am a section with a subsection with another subsection
 

Чтобы иметь возможность правильно разделить их на верхний уровень и подразделы, я подумал, что, возможно, я мог бы использовать replace функцию для удаления значения field1 из значения field 2 и далее. Это оставило бы меня с

 ||field 1        || field 2           || field 3
||I am a section || with a subsection ||  with another subsection
 

Мои вопросы:

  1. Правильный ли это подход или есть что-то более элегантное?
  2. Вопрос в том, как мне использовать replace функцию для динамического выполнения этого во всем CSV?

Ответ №1:

Вы можете ссылаться на другой столбец со следующим выражением GREL: cells['field 2'].value

Например, в вашем случае вы будете заменять значение из field 2 ничем (используя '' ), выражение: value.replace(cells['field 2'].value,'')