Postgres: изменить каждый элемент массива

Добавляя к этому вопросу, если у вас когда-либо было несколько столбцов для переназначения в фрейме данных данных:

def remap(data,dict_labels):
    """
    This function take in a dictionnary of labels : dict_labels 
    and replace the values (previously labelencode) into the string.

    ex: dict_labels = {{'col1':{1:'A',2:'B'}}

    """
    for field,values in dict_labels.items():
        print("I am remapping %s"%field)
        data.replace({field:values},inplace=True)
    print("DONE")

    return data

Надеюсь, что это может быть полезно кому-то.

Cheers

g2]
0
задан Thomas Stubbe 5 March 2019 в 17:27
поделиться

1 ответ

Вам нужно разложить, разделить, а затем собрать обратно.

update the_table
  set the_array = array(select t.val / 10 
                        from unnest(the_table.the_array) as t(val));

Если вам нужно сохранить исходный порядок в массиве, используйте with ordinality

update the_table
  set the_array = array(select t.val / 10 
                        from unnest(the_table.the_array) with ordinality as t(val,idx) 
                        order by t.idx);

Для запуска этого в Liquibase вам нужно использовать изменение <sql>

Онлайн пример: https://rextester.com/IJGA96691

0
ответ дан a_horse_with_no_name 5 March 2019 в 17:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: