将数据框转换为字典

时间:2020-03-15 12:15:09

标签: python pandas dataframe dictionary

我有一个CSV格式的数据框,如图所示。

enter image description here

我想将其转换为字典,以使行是键,值也对应于行。

为此,我使用了代码:-

import pandas as pd
from ast import literal_eval

match_pairs = pd.read_csv('data_d.csv',usecols=['Object','Pairs'])
match_pairs['Pairs'] = match_pairs['Pairs'].apply(literal_eval)
dict = match_pairs.transpose()
dict.to_dict()
print(dict['a'])

当我在match_pairs中导入数据帧时,Pairs列作为字符串而不是列表被导入。因此我使用 literal_eval() 来获取数据结构。

此外, .to_dict() 函数将列转换为键。因此,我转置了数据,然后使用了 .to_dict() 函数。

但不幸的是,我无法获得所需的键值对。
我希望对于 print(dict['a']) ,我得到的值为 ['d','e','f']

请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:2)

首先不要使用dict作为变量名,因为内置的是python代码字。

创建Series,然后使用Series.to_dict

match_pairs = pd.read_csv('data_d.csv',usecols=['Object','Pairs'])
match_pairs['Pairs'] = match_pairs['Pairs'].apply(literal_eval)

d = match_pairs.set_index('Object')['Pairs'].to_dict()

或将zipdict一起使用:

#reset builtin if used like variable
#import builtins
#dict = builtins.dict
d = dict(zip(match_pairs['Object'], match_pairs['Pairs']))