Полярные поля объединяют несколько строк в одну строкуPython

Программы на Python
Ответить
Anonymous
 Полярные поля объединяют несколько строк в одну строку

Сообщение Anonymous »

У меня есть файл df, созданный следующим образом:

Код: Выделить всё

import polars as pl

df = pl.from_repr("""
┌───────────────┬──────────────┬───────────────┐
│ schema_name   ┆ table_name   ┆ column_name   │
│ ---           ┆ ---          ┆ ---           │
│ str           ┆ str          ┆ str           │
╞═══════════════╪══════════════╪═══════════════╡
│ test_schema   ┆ test_table   ┆ test_column   │
│ test_schema   ┆ test_table   ┆ test_column   │
│ test_schema_2 ┆ test_table_2 ┆ test_column_2 │
└───────────────┴──────────────┴───────────────┘
""")
Я хотел бы использовать поляры для агрегирования поля имя_столбца по имени_схемы и имени таблицы, чтобы несколько значений из имени_столбца были объединены в одну строку. Целевой набор данных таков:

Код: Выделить всё

shape: (2, 3)
┌───────────────┬──────────────┬──────────────────────────┐
│ schema_name   ┆ table_name   ┆ column_name              │
│ ---           ┆ ---          ┆ ---                      │
│ str           ┆ str          ┆ str                      │
╞═══════════════╪══════════════╪══════════════════════════╡
│ test_schema_2 ┆ test_table_2 ┆ test_column_2            │
│ test_schema   ┆ test_table   ┆ test_column, test_column │
└───────────────┴──────────────┴──────────────────────────┘
Я могу объединить значения в список следующим образом:

Код: Выделить всё

df.group_by('schema_name','table_name').agg(pl.col('column_name').alias('column_list'))

Код: Выделить всё

shape: (2, 3)
┌───────────────┬──────────────┬────────────────────────────────┐
│ schema_name   ┆ table_name   ┆ column_list                    │
│ ---           ┆ ---          ┆ ---                            │
│ str           ┆ str          ┆ list[str]                      │
╞═══════════════╪══════════════╪════════════════════════════════╡
│ test_schema_2 ┆ test_table_2 ┆ ["test_column_2"]              │
│ test_schema   ┆ test_table   ┆ ["test_column", "test_column"] │
└───────────────┴──────────────┴────────────────────────────────┘
Как мне затем преобразовать поле списка (

Код: Выделить всё

column_list
) в строку, разделенную запятыми? С пандами я бы сделал что-то вроде этого:

Код: Выделить всё

df['column_list_string'] = [','.join(map(str, l)) for l in df['column_list']]
Однако я не могу понять, как использовать .join() в сочетании с полярами .agg().
Альтернативно, как мне сразу перейти от нескольких строк к одной строке, не используя список в качестве промежуточного шага?>

Подробнее здесь: https://stackoverflow.com/questions/751 ... to-one-row
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»