Транспонировать столбец в Pandas DataFrame

У меня есть фрейм данных ниже, я пытаюсь перенести данные на основе столбца Place. Для каждого списка значений в столбце «Место» мне нужно создать каждую строку.

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

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

Language     Capital     Place
Tamil        Chennai     Chennai
Tamil        Chennai     Vellore
Tamil        Chennai     Trichy
Tamil        Chennai     Madurai 
Kerala       Kochi       Kochi
Kerala       Kochi       Trivandrum

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

Любое предложение будет оценено по достоинству

🤔 А знаете ли вы, что...
Python поддерживает параллельное и асинхронное программирование с помощью модулей asyncio и multiprocessing.


50
2

Ответы:

Решено

Используйте ast.literal_eval для преобразования строковых представлений в реальные списки:

import ast
df['Place'] = df['Place'].apply(ast.literal_eval)

Преобразуйте каждый элемент списка в «Место» в отдельную строку, скопируйте значения других столбцов и сбросьте индекс DataFrame для очистки:

df_exploded = df.explode('Place').reset_index(drop=True)
print(df_exploded)

Этого можно добиться, используя функцию взрыв() библиотеки pandas, которая преобразует каждый элемент столбца в виде списка в строку, копируя значения других столбцов.

import pandas as pd

data = {
    'Language': ['Tamil', 'Kerala'],
    'Capital': ['Chennai', 'Kochi'],
    'Place': [['Chennai', 'Vellore', 'Trichy', 'Madurai'], ['Kochi', 'Trivandrum']]
}
df = pd.DataFrame(data)
df_exploded = df.explode('Place')
print(df_exploded)