Python如何将键为元组的字典转换为键值对应列的DataFrame
字典转目标结构pandas DataFrame实现方案
你可以直接通过拆解字典键值对的方式构造DataFrame,代码运行结果完全匹配你给出的预期结构,无额外依赖。
- 方法1:列表推导直接构造(推荐,可读性最高)
import pandas as pd # 原始输入字典 raw_data = {('1', 'Jim'): 'Pass', ('2', 'Nik'): 'Fail', ('3', 'Anna'): 'Pass', ('4', 'Bob'): 'Fail', ('5', 'Sam'): 'Pass', ('6', 'Rob'): 'Fail'} # 遍历字典拆解元组键和值,直接指定列名生成DataFrame df = pd.DataFrame( [(user_id, user_name, result) for (user_id, user_name), result in raw_data.items()], columns=['ID', 'Name', 'Result'] ) # 原始ID是字符串格式,转换为整数匹配预期输出 df['ID'] = df['ID'].astype(int)
运行后打印df得到的输出如下,和你预期的结构完全一致:
ID Name Result 0 1 Jim Pass 1 2 Nik Fail 2 3 Anna Pass 3 4 Bob Fail 4 5 Sam Pass 5 6 Rob Fail
- 方法2:pandas原生索引转换写法
如果你更倾向于用pandas内置的Series转换逻辑,也可以用多重索引重置的方式实现,最终结果和方法1完全相同:
# 先转成带MultiIndex的Series,再重置索引拆分为普通列 df = pd.Series(raw_data, name='Result').reset_index() # 重命名列为目标名称 df.columns = ['ID', 'Name', 'Result'] # ID类型转换 df['ID'] = df['ID'].astype(int)
注意:Python 3.7+版本字典默认保留插入顺序,以上两种方法生成的DataFrame行顺序和你原始字典的键顺序一致,不需要额外排序。
内容的提问来源于stack exchange,提问作者user10999967
相关产品推荐
相关产品推荐

