我有一个100列的pandas数据框,我想为每一列创建一个字典,其中第一列为键,并且我一直在手动进行。
让我解释一个示例数据框
ID a b c
123 jon foo bar
789 pan bam fan
278 car bike boat
让我们考虑上表的列名 ID,a,b,c 。现在,我试图为ID为字典关键字的每一列创建字典。
类似下面的
dicta = {ID: a}
dictb = {ID: b}
dictc = {ID: c}
我目前正在做的是:
dicta_ = dict(zip(df['ID'], df['a']))
dicta = {k:v for k,v in dicta_.items()}
dictb_ = dict(zip(df['ID'], df['b']))
dictb = {k:v for k,v in dictb_.items()}
dictc_ = dict(zip(df['ID'], df['c']))
dictc = {k:v for k,v in dictc_.items()}
并且上面的代码正在获取我想要的结果,但是我必须对所有100列手动进行操作,但这并不是最有效的方法。
如果能通过编写循环或函数获得一些帮助或建议来自动执行该过程,我将不胜感激。预先感谢!
答案 0 :(得分:1)
set_index
,然后使用df.to_dict()
:
d = df.set_index('ID').to_dict()
然后使用值调用该列:
d['a']
# {123: 'jon', 278: 'car', 789: 'pan'}
d['b']
# {123: 'foo', 278: 'bike', 789: 'bam'}