Вложенный список в Python — транспонировать вложенный список в Python

У меня есть вложенный список ниже,

list = [Language:'Tamil'
        Capital: 'Chennai' 
        Place: 'Chennai', 'Vellore', 'Trichy', 'Madurai' 
]

Я ожидаю транспонировать это как,

Language     Capital     Place
Tamil        Chennai     Chennai
Tamil        Chennai     Vellore
Tamil        Chennai     Trichy
Tamil        Chennai     Madurai 

Попробовал преобразовать в фрейм данных pandas,

df = pd.DataFrame(list)

Результат

Language    Capital       Place  
Tamil       Chennai       ['Chennai', 'Vellore', 'Trichy', 'Madurai']  

Будем признательны за предложения перенести каждый список значений в новую строку для этого места.

Первый пункт вашего вопроса ни в коем случае не является «списком». Это может быть словарь, где последний элемент имеет список в качестве значения. Не могли бы вы отредактировать сообщение, чтобы оно было синтаксически правильным?

jsbueno 09.08.2024 13:28

(достаточно того, как Python выведет вашу структуру данных, если вы просто распечатаете ее)

jsbueno 09.08.2024 13:29

Это список словаря, тип этого класса — список.

Jim Macaulay 09.08.2024 13:31

Данные вашего примера не похожи на список словарей. Ваш предполагаемый результат также неясен. Пожалуйста, отредактируйте свой вопрос так, чтобы как входные, так и предполагаемые выходные данные были допустимыми литералами Python.

John Coleman 09.08.2024 13:58
Почему в 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
4
62
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Первый:

data = {
    'Language': 'Tamil',
    'Capital': 'Chennai',
    'Place': ['Chennai', 'Vellore', 'Trichy', 'Madurai']
}

Затем вы можете создать DataFrame, повторив значения языков и заглавных букв и развернув список мест на несколько строк:

df = pd.DataFrame({
    'Language': [data['Language']] * len(data['Place']),
    'Capital': [data['Capital']] * len(data['Place']),
    'Place': data['Place']
})

Выход:

     Language  Capital    Place
0    Tamil     Chennai    Chennai
1    Tamil     Chennai    Vellore
2    Tamil     Chennai    Trichy
3    Tamil     Chennai    Madurai
from itertools import product

data = {
    "Language": "Tamil",
    "Capital": "Chennai",
    "Place": ["Chennai", "Vellore", "Trichy", "Madurai"]
}

results = list(product([data["Language"]], [data["Capital"]], data["Place"]))

for result in results:
    print(f'{result[0]: <10} {result[1]: <10} {result[2]}')

Предполагая, что эти входные данные и вы хотите преобразовать в pandas DataFrame:

data = {
    'Language': 'Tamil',
    'Capital': 'Chennai',
    'Place': ['Chennai', 'Vellore', 'Trichy', 'Madurai']
}

Если вы знаете ключ, содержащий список, просто взорвите его:

import pandas as pd

out = pd.DataFrame(data).explode('Place')

Если вы хотите программно идентифицировать ключи, содержащие списки:

from itertools import product

out = pd.DataFrame(product(*(v if isinstance(v, list) else [v]
                             for v in data.values())),
                   columns=data
                  )

Выход:

  Language  Capital    Place
0    Tamil  Chennai  Chennai
1    Tamil  Chennai  Vellore
2    Tamil  Chennai   Trichy
3    Tamil  Chennai  Madurai

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