将pandas DataFrame转换为dict,其中每个值都是多列值的列表

时间:2016-08-22 16:31:35

标签: python pandas dataframe

我们说我有DataFrame

filename size inverse similarity
123.txt  1    2       34
323.txt  3    1       44
222.txt  4    1       43

我想以

的形式创建一个字典
{'123.txt': [1, 2, 34],
 '323.txt': [3, 1, 44],
 '222.txt': [4, 1, 43]}

解决方案我发现处理使用类似

之类的单值创建dict的情况
df.set_index('Filename')['size'].to_dict()

2 个答案:

答案 0 :(得分:3)

'filename'设为索引,进行转置,然后将to_dictorient='list'一起使用:

my_dict = df.set_index('filename').T.to_dict(orient='list')

结果输出:

{'323.txt': [3, 1, 44], '222.txt': [4, 1, 43], '123.txt': [1, 2, 34]}

答案 1 :(得分:3)

这是一种理解词汇的方法:

{k: v for k, v in zip(df['filename'], df.set_index('filename').values.tolist())}
Out: {'123.txt': [1, 2, 34], '222.txt': [4, 1, 43], '323.txt': [3, 1, 44]}