Тип списка полярностей в строку, разделенную запятымиPython

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

Сообщение Anonymous »

У меня есть файл df, который я хотел бы сгруппировать и записать в формат csv. Однако один из столбцов имеет тип списка, который предотвращает запись df в csv.
import polars as pl

df = pl.DataFrame({"Column A": ["Variable 1", "Variable 2", "Variable 2", "Variable 3", "Variable 3", "Variable 4"],
"Column B": ["AB", "AB", "CD", "AB", "CD", "CD"]})

Что я хочу сгруппировать, как показано ниже:
df.group_by("Column A").agg(pl.col("Column B").unique())

Выход:
shape: (4, 2)
┌────────────┬──────────────┐
│ Column A ┆ Column B │
│ --- ┆ --- │
│ str ┆ list[str] │
╞════════════╪══════════════╡
│ Variable 4 ┆ ["CD"] │
│ Variable 2 ┆ ["CD", "AB"] │
│ Variable 3 ┆ ["AB", "CD"] │
│ Variable 1 ┆ ["AB"] │
└────────────┴──────────────┘

При попытке записать приведенный выше фрейм данных в csv возникает ошибка:
# ComputeError: CSV format does not support nested data. Consider using a different data format. Got: 'list[str]'

При попытке преобразовать тип списка в pl.String возникает ошибка
(df
.group_by("Column A").agg(pl.col("Column B").unique())
.with_columns(pl.col("Column B").cast(pl.String))
)

Выход:
# InvalidOperationError: cannot cast List type (inner: 'String', to: 'String')

Если я попытаюсь разобрать список в контексте group_by:
df.group_by("Column A").agg(pl.col("Column B").unique().explode())

Вывод нежелателен:
shape: (4, 2)
┌────────────┬──────────────┐
│ Column A ┆ Column B │
│ --- ┆ --- │
│ str ┆ list[str] │
╞════════════╪══════════════╡
│ Variable 1 ┆ ["AB"] │
│ Variable 2 ┆ ["CD", "AB"] │
│ Variable 3 ┆ ["CD", "AB"] │
│ Variable 4 ┆ ["CD"] │
└────────────┴──────────────┘

Как мне удобнее всего сгруппировать_by, а затем записать в CSV?
Желаемый вывод, записанный в CSV:
shape: (4, 2)
┌────────────┬──────────────┐
│ Column A ┆ Column B │
│ --- ┆ --- │
│ str ┆ list[str] │
╞════════════╪══════════════╡
│ Variable 3 ┆ ["AB", "CD"] │
│ Variable 1 ┆ ["AB"] │
│ Variable 4 ┆ ["CD"] │
│ Variable 2 ┆ ["CD", "AB"] │
└────────────┴──────────────┘


Подробнее здесь: https://stackoverflow.com/questions/752 ... ted-string
Ответить

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

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

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

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

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