У меня есть список, каждый элемент которого представляет собой список со строками из книги
test_list = [['I love Stackoverflow', 'For ever', 'and always'], ['I dont like rain', 'it is wet']]
book_names = ['message to SO', 'confessions']
Я хотел бы получить следующий кадр данных
book sentence
0 message to SO I love Stackoverflow
1 message to SO For ever
2 message to SO and always
3 confessions I dont like rain
4 confessions it is wet
Теперь мне удалось сделать это с помощью следующего фрагмента кода:
df = pd.DataFrame(test_list, index=book_names).stack().reset_index(level=0)
df.rename(columns={'level_0':'book',
0 : 'sentence'},
inplace = True)
В результате чего :
book sentence
0 message to SO I love Stackoverflow
1 message to SO For ever
2 message to SO and always
0 confessions I dont like rain
1 confessions it is wet
Теперь мне нужно переиндексировать результат:
df.reset_index(drop=True)
Я не особенно доволен этим кодом, так как приходится reset_index и переименовывать столбцы. У кого-нибудь есть лучшее решение?
На самом деле test_list довольно большой, поэтому скорость также является важным фактором.
заранее спасибо
list comprehension
здесь должно быть быстрее. Лучшая производительность теста на реальных данных 18.03.2021