我有一个列表,我想要变成一个数据框,并保持其原始列表中的列表。列表中的列表到数据框中的熊猫
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条目...)
'栈()'就是你正在寻找 –
请确保您标记与绿色对勾最好的答案,使其成为接受的答案。 –