将 pandas 转换为定义用于键值的列的字典
Posted
技术标签:
【中文标题】将 pandas 转换为定义用于键值的列的字典【英文标题】:Convert pandas to dictionary defining the columns used fo the key values 【发布时间】:2017-04-28 13:04:30 【问题描述】:有熊猫数据框“test_df”。我的目标是将其转换为字典。因此我运行这个:
id Name Gender Age
0 1 'Peter' 'M' 32
1 2 'Lara' 'F' 45
因此我运行这个:
test_dict = test_df.set_index('id').T.to_dict()
输出是这样的:
1: 'Name': 'Peter', 'Gender': 'M', 'Age': 32, 2: 'Name': 'Lara', 'Gender': 'F', 'Age': 45
现在,我只想选择“姓名”和“性别”列作为字典键的值。我正在尝试将上面的脚本修改成这样:
test_dict = test_df.set_index('id')['Name']['Gender'].T.to_dict()
没有成功!
有什么建议吗?!
【问题讨论】:
【参考方案1】:你非常接近,使用subset
列[['Name','Gender']]
:
test_dict = test_df.set_index('id')[['Name','Gender']].T.to_dict()
print (test_dict)
1: 'Name': 'Peter', 'Gender': 'M', 2: 'Name': 'Lara', 'Gender': 'F'
另外T
不是必须的,使用参数orient='index'
:
test_dict = test_df.set_index('id')[['Name','Gender']].to_dict(orient='index')
print (test_dict)
1: 'Name': 'Peter', 'Gender': 'M', 2: 'Name': 'Lara', 'Gender': 'F'
【讨论】:
正确答案!非常感谢! 感谢您的评论。如果我的回答有帮助,请不要忘记accept。谢谢。 这对我有用:node_df.set_index('kegg_cid')[['name', 'wt', 'vis']].T.to_dict('dict')。这给了我一个字典形式为 'c00022': 'name': 'pyruvate', 'vis': 1, 'wt': 1, 'c00024': 'name': 'acetyl-CoA ', 'vis': 1, 'wt': 1, ...,其中第一列给出了键。 ' - 引用的字符串都是 df 列,所以我需要转置数据帧(参见***.com/a/56607013/1904943);我的数据框中还有其他列('node',...),我忽略了(或者,您可以对列进行切片以仅使用所需数据导出 df)。以上是关于将 pandas 转换为定义用于键值的列的字典的主要内容,如果未能解决你的问题,请参考以下文章
映射两个数据框以创建一个包含多个键值的字典 - Pandas