У меня есть фрейм данных ниже, я пытаюсь перенести данные на основе столбца 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.
Используйте 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)