将列表元组(索引,列表(要素))转换为DataFrame,并将列值作为要素的布尔值

时间:2017-05-10 19:59:22

标签: python python-3.x pandas

我有以下数据列表:

[(1, [1,2]), (2, [1,2]), (3,[1])]

并希望将其转换为pandas数据帧

   1   2  
1 True True
2 True True
3 True False

是否有内置方法?

3 个答案:

答案 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