我有以下数据列表:
[(1, [1,2]), (2, [1,2]), (3,[1])]
并希望将其转换为pandas数据帧
1 2
1 True True
2 True True
3 True False
是否有内置方法?
答案 0 :(得分:3)
index, data = zip(*[(1, [1,2]), (2, [1,2]), (3,[1])])
pd.DataFrame(list(data), index, [1, 2]).notnull()
1 2
1 True True
2 True True
3 True False
答案 1 :(得分:1)
不是真的“内置”,但很快:
l = [(1, [1,2]), (2, [1,2]), (3,[1])]
df = pd.DataFrame([ i[1] for i in l ], index = [ i[0] for i in l ]).notnull()
输出:
0 1
1 True True
2 True True
3 True False
...如果列名称不一定需要为1,2。
如果他们确实需要这样做,那就是@ piRSquared解决方案的无耻剽窃:df = pd.DataFrame([ i[1] for i in l ], [ i[0] for i in l ], [ 1, 2 ]).notnull()
答案 2 :(得分:1)
# use from_dict to load the list after converting it to a dict.
df = pd.DataFrame.from_dict({e[0]:e[1] for e in l},orient='index')>0
0 1
1 True True
2 True True
3 True False
如果您希望列名为1,2
df.columns=[1,2]
df
Out[231]:
1 2
1 True True
2 True True
3 True False