Превратите список кортежей в фрейм данных pandas с одним столбцом

У меня есть список кортежей вроде:

tuple_lst = [('foo', 'bar'), ('bar', 'foo'), ('ping', 'pong'), ('pong', 'ping')]

И я хочу создать Dataframe с одним столбцом, содержащим каждую пару кортежей, например:

|     one col       |
|     --------      |
|  ('foo', 'bar')   |
|  ('bar', 'foo')   |
|  ('ping', 'pong') |
|  ('pong', 'ping') |

Я пытался:

df = pd.DataFrame(tuple_lst, columns='one col')

Но это вызывает ошибку, поскольку он пытается разделить кортежи на два отдельных столбца. Я знаю, что если я передам сюда список из двух имен столбцов, он создаст фрейм данных с двумя столбцами, а это не то, что мне нужно. Думаю, я мог бы затем снова объединить эти два столбца в список кортежей, но мне кажется, что разбить их и снова собрать вместе — это огромная работа. Я чувствую, что должен быть более простой способ сделать это? Мне нужно, чтобы выходные данные представляли собой фрейм данных, а не серию, чтобы я мог позже добавить другие столбцы и т. д.

Я погуглил «как составить список кортежей в один столбец панд», и дублирующийся вопрос не появился, только вопросы, которые разделяют кортежи на два столбца. Странно, что именно тот вопрос, который я задавал, не появился, но спасибо, что указали мне на него :)

Emi OB 27.06.2024 10:16
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
1
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Используйте словарь, это гарантирует, что конструктор DataFrame не будет пытаться интерпретировать данные как 2D:

pd.DataFrame({'one col': tuple_lst})

Вы также можете использовать Series и преобразовать в_frame:

pd.Series(tuple_lst).to_frame(name='one col')

Или, ближе к вашему исходному подходу, который может быть полезен, если у вас есть ограничения на формат, передаваемый в конструктор. Хотя и не так эффективно (для небольших списков):

pd.DataFrame(pd.Series(tuple_lst), columns=['one col'])

Выход:

        one col
0    (foo, bar)
1    (bar, foo)
2  (ping, pong)
3  (pong, ping)

тайминги

Для небольших списков pd.DataFrame(pd.Series(tuple_lst), columns=['one col']) не так эффективно, но для больших списков все решения эквивалентны:

Спасибо :) Я знал, что будет простой способ!

Emi OB 27.06.2024 09:12

@mozway - всегда с удовольствием читаю твои ответы

gtomer 27.06.2024 09:38

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

Похожие вопросы

Pandas сжимает строки, когда данные отсутствуют
Передача переменных конфигурации в функции, чтобы они вели себя как константы времени компиляции
Когда я запускаю поэтическую оболочку на MacOS с оболочкой ZSH, выдает ошибку «команда не найдена»
Развертывание веб-приложения Python (Dash) в Azure, конвейер работает слишком долго, а колесо создания сообщений для панд все еще работает. Как оптимизировать?
Как мне заставить селен последовательно находить и использовать элемент при создании викторины Kahoot?
Как извлечь подстроки непосредственно перед ближайшим знаком препинания?
Используя Postgres/Flask, как я могу запросить следующее появление запланированной задачи, когда дни/часы/минуты хранятся как целые числа в своих собственных столбцах?
Добавление ведущих нулей в столбцы данных при загрузке из файлов CSV с помощью pandas
Используйте Python для управления форматом json.dump() с помощью kwarg "default="?
Запросы Python и cURL никогда не возвращают ответ