Список в DataFrame с заголовками строк и столбцов

Мне нужно преобразовать список (включая заголовки) в 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'],
]

Ожидаемый результат.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
0
74
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете явно определить 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      │
# └───────────────────┴──────────────┴───────────┘

Другие вопросы по теме