Моя цель состояла в том, чтобы сгруппировать/разделить один столбец (а ниже), создать строковый идентификатор (столбцы b и c), а затем использовать этот идентификатор b_c в качестве имени столбца в сводном фрейме данных.
Код ниже работает нормально, насколько я могу судить, но путь получения результата немного запутан. Итак, мой вопрос: можно ли это сделать более простым способом?
Кстати, в таком крошечном масштабе (пока максимум 1 тыс. строк) я не одержим желанием сделать это быстрее.
import polars as pl
data = {
"a": [1, 1, 1, 2, 2, 3],
"b": [11, 12, 13, 11, 12, 11],
"c": ["x1", "x2", "x3", "x1", "x2", "x1"],
"val": [101, 102, 102, 201, 202, 301],
}
df = pl.DataFrame(data)
counter = 0
for tmp_df in df.partition_by("a"):
grp_df = (
tmp_df.with_columns((pl.col("b").cast(pl.String) + "_" + pl.col("c")).alias("col_id"))
.drop("b", "c")
.pivot("col_id", index="a")
)
if counter == 0:
result_df = grp_df.select(pl.all())
else:
result_df = pl.concat([result_df, grp_df], how="diagonal")
counter += 1
print(result_df)
Выход:
shape: (3, 4)
┌─────┬───────┬───────┬───────┐
│ a ┆ 11_x1 ┆ 12_x2 ┆ 13_x3 │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 ┆ i64 │
╞═════╪═══════╪═══════╪═══════╡
│ 1 ┆ 101 ┆ 102 ┆ 102 │
│ 2 ┆ 201 ┆ 202 ┆ null │
│ 3 ┆ 301 ┆ null ┆ null │
└─────┴───────┴───────┴───────┘
Подробнее здесь: https://stackoverflow.com/questions/758 ... and-concat
Разделение кадра данных Polars с помощью Pivot и Concat ⇐ Python
Программы на Python
-
Anonymous
1771589463
Anonymous
Моя цель состояла в том, чтобы сгруппировать/разделить один столбец (а ниже), создать строковый идентификатор (столбцы b и c), а затем использовать этот идентификатор b_c в качестве имени столбца в сводном фрейме данных.
Код ниже работает нормально, насколько я могу судить, но путь получения результата немного запутан. Итак, мой вопрос: можно ли это сделать более простым способом?
Кстати, в таком крошечном масштабе (пока максимум 1 тыс. строк) я не одержим желанием сделать это быстрее.
import polars as pl
data = {
"a": [1, 1, 1, 2, 2, 3],
"b": [11, 12, 13, 11, 12, 11],
"c": ["x1", "x2", "x3", "x1", "x2", "x1"],
"val": [101, 102, 102, 201, 202, 301],
}
df = pl.DataFrame(data)
counter = 0
for tmp_df in df.partition_by("a"):
grp_df = (
tmp_df.with_columns((pl.col("b").cast(pl.String) + "_" + pl.col("c")).alias("col_id"))
.drop("b", "c")
.pivot("col_id", index="a")
)
if counter == 0:
result_df = grp_df.select(pl.all())
else:
result_df = pl.concat([result_df, grp_df], how="diagonal")
counter += 1
print(result_df)
Выход:
shape: (3, 4)
┌─────┬───────┬───────┬───────┐
│ a ┆ 11_x1 ┆ 12_x2 ┆ 13_x3 │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 ┆ i64 │
╞═════╪═══════╪═══════╪═══════╡
│ 1 ┆ 101 ┆ 102 ┆ 102 │
│ 2 ┆ 201 ┆ 202 ┆ null │
│ 3 ┆ 301 ┆ null ┆ null │
└─────┴───────┴───────┴───────┘
Подробнее здесь: [url]https://stackoverflow.com/questions/75892892/partition-a-polars-dataframe-with-pivot-and-concat[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия