Как вы, возможно, заметили из других моих вопросов, прямо сейчас я перехожу от панд к полярам. У меня есть полярный df с по-разному вложенными списками, например:
┌────────────────────────────────────┬────────────────────────────────────┬─────────────────┬──────┐
│ col1 ┆ col2 ┆ col3 ┆ col4 │
│ --- ┆ --- ┆ --- ┆ --- │
│ list[list[str]] ┆ list[list[str]] ┆ list[str] ┆ str │
╞════════════════════════════════════╪════════════════════════════════════╪═════════════════╪══════╡
│ [["a", "a"], ["b", "b"], ["c", "c"]┆ [["a", "a"], ["b", "b"], ["c", "c"]┆ ["A", "B", "C"] ┆ 1 │
│ [["a", "a"]] ┆ [["a", "a"]] ┆ ["A"] ┆ 2 │
│ [["b", "b"], ["c", "c"]] ┆ [["b", "b"], ["c", "c"]] ┆ ["B", "C"] ┆ 3 │
└────────────────────────────────────┴────────────────────────────────────┴─────────────────┴──────┘
Теперь я хочу соединить списки наизнанку, используя разные разделители, чтобы добиться этого:
┌─────────────┬─────────────┬───────┬──────┐
│ col1 ┆ col2 ┆ col3 ┆ col4 │
│ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str ┆ str │
╞═════════════╪═════════════╪═══════╪══════╡
│ a+a-b+b-c+c ┆ a+a-b+b-c+c ┆ A-B-C ┆ 1 │
│ a+a ┆ a+a ┆ A ┆ 2 │
│ b+b-c+c ┆ b+b-c+c ┆ B-C ┆ 3 │
└─────────────┴─────────────┴───────┴──────┘
Я делаю это с помощью map_elements и цикла for, но считаю, что это крайне неэффективно. Есть ли собственный способ справиться с этим в Polars?
Вот мой код:
import polars as pl
df = pl.DataFrame({"col1": [[["a", "a"], ["b", "b"], ["c", "c"]], [["a", "a"]], [["b", "b"], ["c", "c"]]],
"col2": [[["a", "a"], ["b", "b"], ["c", "c"]], [["a", "a"]], [["b", "b"], ["c", "c"]]],
"col3": [["A", "B", "C"], ["A"], ["B", "C"]],
"col4": ["1", "2", "3"]})
nested_list_cols = ["col1", "col2"]
list_cols = ["col3"]
for col in nested_list_cols:
df = df.with_columns(pl.lit(df[col].map_elements(lambda listed: ['+'.join(element) for element in listed], return_dtype=pl.List(pl.String))).alias(col)) # is the return_dtype always pl.List(pl.String)?
for col in list_cols + nested_list_cols:
df = df.with_columns(pl.lit(df[col].list.join(separator='-')).alias(col))
Подробнее здесь: https://stackoverflow.com/questions/791 ... to-strings
Объединение вложенных списков в столбцах Polars в строки ⇐ Python
Программы на Python
-
Anonymous
1762209684
Anonymous
Как вы, возможно, заметили из других моих вопросов, прямо сейчас я перехожу от панд к полярам. У меня есть полярный df с по-разному вложенными списками, например:
┌────────────────────────────────────┬────────────────────────────────────┬─────────────────┬──────┐
│ col1 ┆ col2 ┆ col3 ┆ col4 │
│ --- ┆ --- ┆ --- ┆ --- │
│ list[list[str]] ┆ list[list[str]] ┆ list[str] ┆ str │
╞════════════════════════════════════╪════════════════════════════════════╪═════════════════╪══════╡
│ [["a", "a"], ["b", "b"], ["c", "c"]┆ [["a", "a"], ["b", "b"], ["c", "c"]┆ ["A", "B", "C"] ┆ 1 │
│ [["a", "a"]] ┆ [["a", "a"]] ┆ ["A"] ┆ 2 │
│ [["b", "b"], ["c", "c"]] ┆ [["b", "b"], ["c", "c"]] ┆ ["B", "C"] ┆ 3 │
└────────────────────────────────────┴────────────────────────────────────┴─────────────────┴──────┘
Теперь я хочу соединить списки наизнанку, используя разные разделители, чтобы добиться этого:
┌─────────────┬─────────────┬───────┬──────┐
│ col1 ┆ col2 ┆ col3 ┆ col4 │
│ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str ┆ str │
╞═════════════╪═════════════╪═══════╪══════╡
│ a+a-b+b-c+c ┆ a+a-b+b-c+c ┆ A-B-C ┆ 1 │
│ a+a ┆ a+a ┆ A ┆ 2 │
│ b+b-c+c ┆ b+b-c+c ┆ B-C ┆ 3 │
└─────────────┴─────────────┴───────┴──────┘
Я делаю это с помощью map_elements и цикла for, но считаю, что это крайне неэффективно. Есть ли собственный способ справиться с этим в Polars?
Вот мой код:
import polars as pl
df = pl.DataFrame({"col1": [[["a", "a"], ["b", "b"], ["c", "c"]], [["a", "a"]], [["b", "b"], ["c", "c"]]],
"col2": [[["a", "a"], ["b", "b"], ["c", "c"]], [["a", "a"]], [["b", "b"], ["c", "c"]]],
"col3": [["A", "B", "C"], ["A"], ["B", "C"]],
"col4": ["1", "2", "3"]})
nested_list_cols = ["col1", "col2"]
list_cols = ["col3"]
for col in nested_list_cols:
df = df.with_columns(pl.lit(df[col].map_elements(lambda listed: ['+'.join(element) for element in listed], return_dtype=pl.List(pl.String))).alias(col)) # is the return_dtype always pl.List(pl.String)?
for col in list_cols + nested_list_cols:
df = df.with_columns(pl.lit(df[col].list.join(separator='-')).alias(col))
Подробнее здесь: [url]https://stackoverflow.com/questions/79155737/join-differently-nested-lists-in-polars-columns-into-strings[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия