将pandas数据帧转换为字典,其中键是索引,值是列值的列表

时间:2019-01-22 12:13:11

标签: python python-3.x pandas

我有一个数据框

df:

    cola    colb   colc   cold
0      0    'a'     'b'   'c'
1      1    'd'     None  None
2      2    'g'     'h'   None

我想将其转换为dict,其中index是键,列值列表是如下值:

d = {0 : [0,'a','b','c'], 1: [1,'d'], 2: [2,'g','h'] }

我尝试过的事情

df.to_dict(orient='index')

我也尝试使用orient参数中的其他值,但没有任何效果。

编辑

我想忽略字典中的NULL值,如输出所示。

1 个答案:

答案 0 :(得分:5)

仅在转置orient='list'之前,将DataFrame.to_dictDataFrame一起使用:

d = df.T.to_dict(orient='list')
print (d)
{0: [0, 'a', 'b', 'c'], 1: [1, 'd', 'e', 'f'], 2: [2, 'g', 'h', 'i']}

编辑:

d = df.stack().groupby(level=0).apply(list).to_dict()
print (d)
{0: [0, 'a', 'b', 'c'], 1: [1, 'd'], 2: [2, 'g', 'h']}

或者:

d = {k:[x for x in v if x is not None] for k, v in df.T.to_dict(orient='list').items()}
print (d)
{0: [0, 'a', 'b', 'c'], 1: [1, 'd'], 2: [2, 'g', 'h']}