После того как я отменил поворот кадра данных Polars, как я могу вернуть его в исходную форму без добавления индекса?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 После того как я отменил поворот кадра данных Polars, как я могу вернуть его в исходную форму без добавления индекса?

Сообщение Anonymous »


import polars as pl

df = pl.DataFrame({
'A': range(1,4),
'B': range(1,4),
'C': range(1,4),
'D': range(1,4)
})

print(df)

shape: (3, 4)
┌─────┬─────┬─────┬─────┐
│ A ┆ B ┆ C ┆ D │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╪═════╡
│ 1 ┆ 1 ┆ 1 ┆ 1 │
│ 2 ┆ 2 ┆ 2 ┆ 2 │
│ 3 ┆ 3 ┆ 3 ┆ 3 │
└─────┴─────┴─────┴─────┘

df_long = df.unpivot(
variable_name="recipe",
value_name="revenue")

print(df_long)

shape: (12, 2)
┌────────┬─────────┐
│ recipe ┆ revenue │
│ --- ┆ --- │
│ str ┆ i64 │
╞════════╪═════════╡
│ A ┆ 1 │
│ A ┆ 2 │
│ A ┆ 3 │
│ B ┆ 1 │
│ B ┆ 2 │
│ … ┆ … │
│ C ┆ 2 │
│ C ┆ 3 │
│ D ┆ 1 │
│ D ┆ 2 │
│ D ┆ 3 │
└────────┴─────────┘

Кажется, мне нужно добавить индекс, чтобы вернуть df_long обратно в исходную форму df? Нет ли способа повернуть фрейм данных Polars без добавления индекса?
df_long = df_long.with_columns(index=pl.col("revenue").cum_count().over("recipe"))

df_long.pivot(
on='recipe',
index='index',
values='revenue',
aggregate_function='first'
)

shape: (3, 5)
┌───────┬─────┬─────┬─────┬─────┐
│ index ┆ A ┆ B ┆ C ┆ D │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ u32 ┆ i64 ┆ i64 ┆ i64 ┆ i64 │
╞═══════╪═════╪═════╪═════╪═════╡
│ 1 ┆ 1 ┆ 1 ┆ 1 ┆ 1 │
│ 2 ┆ 2 ┆ 2 ┆ 2 ┆ 2 │
│ 3 ┆ 3 ┆ 3 ┆ 3 ┆ 3 │
└───────┴─────┴─────┴─────┴─────┘

В R я могу выполнить эквивалент разворота и поворота без индексации, и искал ту же функциональность в Python.
df_pandas = df.to_pandas()

library(tidyverse)
library(reticulate)

df_long
pivot_longer(
everything(),
names_to = 'recipe',
values_to = 'value'
)

df_long |>
pivot_wider(
names_from='recipe',
values_from='value'
) |>
unnest(cols = c(A,B,C,D))


Подробнее здесь: https://stackoverflow.com/questions/781 ... ginal-form
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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