У меня есть список списков, которые я хочу превратить в dataframe, сохраняя их индекс в исходном списке.Список списков в dataframe в pandas
x = [["a", "b", "c"], ["A", "B"], ["AA", "BB", "CC"]]
Я могу сделать это с цикл, как это:
result = []
for id, row in enumerate(x):
d = pd.DataFrame({"attr": row, "id": [id]*len(row)})
result.append(d)
result = pd.concat(result, ignore_index=True)
или эквивалентное выражение генератора:
pd.concat((pd.DataFrame({"attr": row, "id": [id]*len(row)})
for id, row in enumerate(x)), ignore_index=True)
И работает отлично, производя кадр данных, как:
id attr
0 0 a
1 0 b
2 0 c
3 1 A
4 1 B
5 2 AA
6 2 BB
7 2 CC
Но это чувствует например, должен быть более «panda-esque» способ сделать это, чем с шаблоном list-loop-append или эквивалентным генератором.
Могу ли я создать фрейм данных выше с помощью вызова pandas, т. Е. Без понимания for или python?
(желательно также более быстрое решение: в «жанрах» данных киноинтерфейса, установленном в https://grouplens.org/datasets/movielens/, требуется> 4 секунды, чтобы сгладить список жанров на фильм, хотя всего всего 20 тыс. Записей ...)
'Stack()' является то, что вы ищете –
Убедитесь, что вы отмечаете лучший ответ с зеленой галочкой, так что становится принятый ответ. –