如何将pandas DataFrame转换为以A列值为键的指定结构字典
你可以先将A列设置为DataFrame的行索引,再调用to_dict方法并指定orient='index'参数即可实现需求,完整代码如下:
import pandas as pd d = { 'A': ['a1', 'a2', 'a3', 'a4', 'a5'], 'B': ['b1', 'b2', 'b3', 'b4', 'b5'], 'C': ['c1', 'c2', 'c3', 'c4', 'c5'], 'D': ['d1', 'd2', 'd3', 'd4', 'd5'], 'E': ['e1', 'e2', 'e3', 'e4', 'e5'], 'F': ['f1', 'f2', 'f3', 'f4', 'f5'], 'G': ['g1', 'g2', 'g3', 'g4', 'g5'], 'H': ['h1', 'h2', 'h3', 'h4', 'h5'], } df = pd.DataFrame(d) # 核心转换逻辑 out = df.set_index('A').to_dict(orient='index')
- 你之前使用的
orient='records'得到的是[{'A':'a1','B':'b1',...}, {'A':'a2',...}]格式的列表,不符合你要的外层键为A列值的结构,orient='index'参数会将行索引作为外层字典的键,每行其余列的键值对作为内层字典,刚好匹配你的需求。 - 你贴出的目标输出中H列的值为对应G列的值,属于和原始数据不一致的手误,如果确实需要该效果,可以在转换前增加一行代码修改H列的值:
df['H'] = df['G']
内容的提问来源于stack exchange,提问作者Abhishek Jain
相关产品推荐
相关产品推荐

