我有一個列表,我想要變成一個數據框,並保持其原始列表中的列表。列表中的列表到數據框中的熊貓
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
但感覺就像應該有一個更「熊貓式」的方式,而不是使用列表循環追加模式或等效發生器。
我可以使用pandas調用創建上面的數據框,即不使用for循環或python理解嗎?
(最好也是一個更快的解決方案:在電影鏡頭數據集的'流派'上https://grouplens.org/datasets/movielens/這需要4秒鐘以平攤每部電影的流派列表,儘管它總共只有20k條目...)
'棧()'就是你正在尋找 –
請確保您標記與綠色對勾最好的答案,使其成爲接受的答案。 –