如何将字典的键与值元组元素分别存入DataFrame三列?
解决Python字典转指定格式DataFrame的问题
我来帮你搞定这个需求!先给你解释下为啥rules.values()[1]会报错:在Python 3里,字典的values()方法返回的是一个视图对象(不是可直接索引的列表),所以没法直接用下标取元素。如果要按索引访问某个值,得先把它转成列表,比如list(rules.values())[1]就能正常获取第二个值了。
接下来是实现字典转目标DataFrame的具体方案:
完整代码示例
import pandas as pd # 你的原始字典 rules = {(1, 5): ((2,), 1.0), (2, 5): ((1,), 1.0), (4,): ((2,), 1.0), (5,): ((1, 2), 1.0)} # 构建DataFrame的数据源列表 data_rows = [] for key, value_tuple in rules.items(): # 从键值对中提取三列数据 col1 = key col2 = value_tuple[0] # 值元组里逗号前的部分 col3 = value_tuple[1] # 值元组里逗号后的数值 data_rows.append([col1, col2, col3]) # 生成指定列名的DataFrame result_df = pd.DataFrame(data_rows, columns=["Col1", "Col2", "Col3"]) # 查看结果 print(result_df)
代码说明
- 用
rules.items()遍历字典,能同时拿到每个键和对应的值;这里的值本身是一个元组(比如((2,), 1.0)),直接通过索引[0]和[1]就能拆分出你需要的Col2和Col3内容。 - 把所有行数据收集到
data_rows列表后,传入pd.DataFrame()就能快速生成带指定列名的DataFrame。
运行结果
输出的DataFrame会完全符合你的要求:
Col1 Col2 Col3 0 (1, 5) (2,) 1.0 1 (2, 5) (1,) 1.0 2 (4,) (2,) 1.0 3 (5,) (1, 2) 1.0
内容的提问来源于stack exchange,提问作者Ray92
相关产品推荐
相关产品推荐

