我有一个CSV格式的数据框,如图所示。
我想将其转换为字典,以使行是键,值也对应于行。
为此,我使用了代码:-
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']
。
请帮助我解决这个问题。
答案 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()
或将zip
与dict
一起使用:
#reset builtin if used like variable
#import builtins
#dict = builtins.dict
d = dict(zip(match_pairs['Object'], match_pairs['Pairs']))