data = {
'date': ['2020-04-27', '2020-04-27', '2020-04-27'],
'user': ['Steeve', 'Pam', 'Olive'],
'mentions': ["['sport', 'basket']", "['politique']", "[]"],
'reply_to': [
"[{'user_id': '123', 'username': 'aaa'}, {'user_id': '234', 'username': 'bbb'}, {'user_id': '456', 'username': 'ccc'}]",
"[{'user_id': '567', 'username': 'zzz'}, {'user_id': '458', 'username': 'vfd'}]",
"[{'user_id': '666', 'username': 'ggg'}]"],
'text': ['textfromSteeve', 'textfromPam', 'textfromOlive']
}
stack = pd.DataFrame(data, columns=['date', 'user','mentions','reply_to','text'])
На этом кадре данных я пытаюсь преобразовать столбцы mentions
и reply_to
во вложенный список. Цель состоит в том, чтобы применить функцию разнесения pandas, чтобы отобразить одну строку для каждого числа упоминаний. Например, я бы хотел 3 строки пользователя 'Pam' с одним упоминанием для каждой строки (Steeve, Olive и Mar c).
Пока что я сделал следующее:
def nested_list(li):
temp = []
for elem in li:
temp.append([elem])
return temp
stack['mentions_nested= stack.mentions.apply(lambda x: nested_list(x))
stack['replies_nested= stack.reply_to.apply(lambda x: nested_list(x))
Проблема в том, что в столбце есть только одно имя (строка). Он разбивает каждую букву в отдельный список (например: [[P], [a], [m]]).
Относительно столбца reply_to, где длина словаря равна 1, он возвращает что-то например: [[id], [username]].
Ребята, у вас есть идеи, как я могу это сделать?
К вашему сведению: я не собираюсь применять функцию разнесения в обоих случаях упоминается столбец reply_to. Это будет два разных процесса. python