You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何排除字典键 将字典值转为指定列名的pandas DataFrame

实现方案

首先修正原代码的笔误:pd.Dataframe 是错误写法,正确类名为 pd.DataFrame(大写F)。

不需要先初始化空表再逐行追加(该方式数据量大时性能极低),直接提取字典的所有值传入DataFrame构造方法即可,字典的键会被自动忽略,每个值列表会被识别为一行数据。

推荐写法(性能最优)

import pandas as pd 

# 待处理字典full_data
full_data = {'MON_13891_1040_20220606': ['13891', 'MON_13891_1040_20220606', '20220606', '20220612', '20220614', '20220614', '1132.116664', '15378.55', '19.633334', '426.65', '0', '0', '0', '0'], 'MON_16440_9999_20220606': ['16440', 'MON_16440_9999_20220606', '20220606', '20220612', '20220614', '20220614', '619.92', '9621.64', '13.0', '304.14', '0.0', '0.0', '7.0', '105.0']}

header = ["Group", "PeriodIdentifier", "WeekIdentifier", "Start", "End", "PostedDate", "ApprovedDate", "RegularTotalHours", "RegularTotalDollars", "OverTimeTotalHours", "OverTimeTotalDollars","DoubleTimeTotalHours", "DoubleTimeTotalDollars", "MiscPayTotalHours", "MiscPayTotalDollars"]

# 直接传入字典值构造DataFrame
df1 = pd.DataFrame(data=full_data.values(), columns=header)

追加写法(仅兼容空表初始化逻辑,不推荐)

如果你必须保留先初始化空DataFrame的流程,不要使用已被Pandas弃用的append()方法,用concat一次性拼接所有行即可:

df1 = pd.DataFrame(columns=header)
# 拼接所有行数据,重置索引
df1 = pd.concat([df1, pd.DataFrame(full_data.values(), columns=header)], ignore_index=True)

注意:你提供的示例字典中,每个值的列表长度为14,和预设的15个列名长度不匹配,实际运行时请确认每行数据长度和列数对齐,否则会出现值错位、自动填充空值的问题。


内容的提问来源于stack exchange,提问作者Eliot Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:51:27