Мне нужно преобразовать список (включая заголовки) в Dataframe.
Если я сделаю это напрямую с помощью pl.DataFrame(list)
, заголовки будут созданы, и все будет сохранено в виде строки. Более того, таблица транспонируется так, что первый элемент в списке становится первым столбцом в фрейме данных.
Список ввода.
[
['Earnings estimate', 'Current qtr. (Jun 2024)', 'Next qtr. (Sep 2024)', 'Current year (2024)', 'Next year (2025)'],
['No. of analysts', '13', '11', '26', '26'],
['Avg. Estimate', '1.52', '1.62', '6.27', '7.23'],
['Low estimate', '1.36', '1.3', '5.02', '5.88'],
['High estimate', '1.61', '1.74', '6.66', '8.56'],
['Year ago EPS', '1.76', '1.36', '5.74', '6.27'],
]
Ожидаемый результат.
Вы можете явно определить orient=
, чтобы предотвратить транспозицию:
pl.DataFrame(data[1:], orient = "row", schema=data[0])
shape: (5, 5)
┌───────────────────┬─────────────────────────┬──────────────────────┬─────────────────────┬──────────────────┐
│ Earnings estimate ┆ Current qtr. (Jun 2024) ┆ Next qtr. (Sep 2024) ┆ Current year (2024) ┆ Next year (2025) │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str ┆ str ┆ str │
╞═══════════════════╪═════════════════════════╪══════════════════════╪═════════════════════╪══════════════════╡
│ No. of analysts ┆ 13 ┆ 11 ┆ 26 ┆ 26 │
│ Avg. Estimate ┆ 1.52 ┆ 1.62 ┆ 6.27 ┆ 7.23 │
│ Low estimate ┆ 1.36 ┆ 1.3 ┆ 5.02 ┆ 5.88 │
│ High estimate ┆ 1.61 ┆ 1.74 ┆ 6.66 ┆ 8.56 │
│ Year ago EPS ┆ 1.76 ┆ 1.36 ┆ 5.74 ┆ 6.27 │
└───────────────────┴─────────────────────────┴──────────────────────┴─────────────────────┴──────────────────┘
Конструктор DataFrame имеет параметр orient
:
orient: {’col’, ‘row’}, по умолчанию Нет Стоит ли интерпретировать двумерные данные в виде столбцов или строк. Если нет, ориентация выводится путем сопоставления столбцов и измерений данных. Если это произойдет не дает убедительных результатов, используется ориентация столбцов.
Итак, в вашем случае используется ориентация col
, но вы можете вручную установить ее на row
:
pl.DataFrame(data[1:], schema=data[0], orient = "row")
shape: (5, 5)
┌───────────────────┬─────────────────────────┬──────────────────────┬─────────────────────┬──────────────────┐
│ Earnings estimate ┆ Current qtr. (Jun 2024) ┆ Next qtr. (Sep 2024) ┆ Current year (2024) ┆ Next year (2025) │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str ┆ str ┆ str │
╞═══════════════════╪═════════════════════════╪══════════════════════╪═════════════════════╪══════════════════╡
│ No. of analysts ┆ 13 ┆ 11 ┆ 26 ┆ 26 │
│ Avg. Estimate ┆ 1.52 ┆ 1.62 ┆ 6.27 ┆ 7.23 │
│ Low estimate ┆ 1.36 ┆ 1.3 ┆ 5.02 ┆ 5.88 │
│ High estimate ┆ 1.61 ┆ 1.74 ┆ 6.66 ┆ 8.56 │
│ Year ago EPS ┆ 1.76 ┆ 1.36 ┆ 5.74 ┆ 6.27 │
└───────────────────┴─────────────────────────┴──────────────────────┴─────────────────────┴──────────────────┘
Для полноты картины в Polars также есть конструктор для данных, подобных записям: Polars.from_records, который вы также можете использовать здесь.
import polars as pl
data = [
['Earnings estimate', 'Current qtr.', 'Next qtr.'],
['No. of analysts', '13', '11', ],
['Avg. Estimate', '1.52', '1.62', ],
['Low estimate', '1.36', '1.3', ],
['High estimate', '1.61', '1.74', ],
['Year ago EPS', '1.76', '1.36', ],
]
df = pl.from_records(data[1:], schema=data[0])
print(df)
# shape: (5, 3)
# ┌───────────────────┬──────────────┬───────────┐
# │ Earnings estimate ┆ Current qtr. ┆ Next qtr. │
# │ --- ┆ --- ┆ --- │
# │ str ┆ str ┆ str │
# ╞═══════════════════╪══════════════╪═══════════╡
# │ No. of analysts ┆ 13 ┆ 11 │
# │ Avg. Estimate ┆ 1.52 ┆ 1.62 │
# │ Low estimate ┆ 1.36 ┆ 1.3 │
# │ High estimate ┆ 1.61 ┆ 1.74 │
# │ Year ago EPS ┆ 1.76 ┆ 1.36 │
# └───────────────────┴──────────────┴───────────┘