如何基于给定字典按行列填充规则生成指定结构DataFrame
实现代码
直接基于pandas和numpy实现,逻辑完全匹配给定填充规则,代码如下:
import pandas as pd import numpy as np # 原始输入字典 source_dict = {1: [1,2,3,4,5], 6: 6, 7: [7,8], 9: {}, 10: {}} # 统一用1-10作为行索引和列名 idx_range = list(range(1, 11)) # 先初始化全0的10*10矩阵,默认所有位置填充0 df = pd.DataFrame( np.zeros((len(idx_range), len(idx_range)), dtype=int), index=idx_range, columns=idx_range ) for key, val in source_dict.items(): # 对应值为空字典时直接跳过,保持原有0值即可 if isinstance(val, dict) and not val: continue # 把单值格式的取值统一转为列表,方便批量索引 if not isinstance(val, list): val = [val] # 将指定行、列交叉的位置批量赋值为1 df.loc[val, val] = 1 # 设置首列表头 df.index.name = "A header"
效果验证
运行代码后生成的DataFrame完全符合规则要求:
- 键1对应取值覆盖1-5,行1到5、列1到5的交叉区域全部填充1
- 键6对应取值为6,仅行6、列6的交叉位置填充1
- 键7对应取值覆盖7、8,行7到8、列7到8的交叉区域全部填充1
- 键9、10对应值为空字典,两行及对应列所有位置均保持0
- 其余未被规则命中的位置全部填充0
内容的提问来源于stack exchange,提问作者alireza
相关产品推荐
相关产品推荐

