如何从包含字典列表的字典创建指定格式的DataFrame?
实现方法
可以通过以下步骤用 pandas 生成目标格式的 DataFrame:
- 遍历原字典的每个外层键(
dic1、dic2),提取对应子字典中值为True和False的键; - 将两组键列表补全到相同长度(短的列表用空字符串填充);
- 为每个外层键生成临时 DataFrame,仅第一行保留外层键作为索引,其余行索引为空字符串;
- 合并所有临时 DataFrame 得到最终结果。
完整代码
import pandas as pd adict = {'dic1': [{'a': True, 'b': False, 'c': True, 'd': True, 'z': False}], 'dic2': [{'e': True, 'f': False, 'g': False}]} dfs = [] for main_key, sub_list in adict.items(): # 取出子字典(原字典的值是包含单个字典的列表) sub_dict = sub_list[0] # 分别筛选True和False对应的键 true_keys = [k for k, v in sub_dict.items() if v] false_keys = [k for k, v in sub_dict.items() if not v] # 确定需要生成的行数(取两组键的最大长度) max_rows = max(len(true_keys), len(false_keys)) # 补全列表长度,确保两组数据行数一致 true_padded = true_keys + [''] * (max_rows - len(true_keys)) false_padded = false_keys + [''] * (max_rows - len(false_keys)) # 生成索引:第一行是外层键,其余行留空 idx = [main_key] + [''] * (max_rows - 1) # 创建临时DataFrame并加入列表 temp_df = pd.DataFrame({'True': true_padded, 'False': false_padded}, index=idx) dfs.append(temp_df) # 合并所有临时DataFrame result_df = pd.concat(dfs) print(result_df)
输出结果
True False dic1 a b c z d dic2 e f g
内容的提问来源于stack exchange,提问作者user12252991
相关产品推荐
相关产品推荐

