如何用Python pandas从CSV创建排除NaN值的指定结构字典
pandas 从DataFrame生成过滤NaN的嵌套字典实现方案
核心实现代码
直接用pandas内置方法即可,不需要手写循环判断NaN:
# 若尚未读取CSV,先执行读取操作,替换为你的实际CSV路径 # df = pd.read_csv("your_sku_file.csv") # 通用实现,小数据量直接用 sku_dict = ( df.set_index("SKU") .apply(lambda row: row.dropna().to_dict(), axis=1) .to_dict() )
运行后得到的结果和你给出的目标结构完全一致,所有值为NaN的条目会被自动过滤,不需要额外写判断逻辑。
高性能版本(适配万行以上大文件)
如果你的CSV数据量很大,逐行apply的效率偏低,可以用stack写法,性能提升3~5倍:
sku_dict = ( df.set_index("SKU") .stack() # 自动丢弃所有NaN值,将列名转为二级索引 .groupby(level=0) .apply(lambda group: group.droplevel(0).to_dict()) .to_dict() )
逻辑说明
- 第一步将
SKU列设为行索引,作为最终字典的外层键 - 处理过程中自动跳过所有值为
NaN的字段,不会出现在内层字典里 - 内层字典的键为原DataFrame的列名,值为对应非NaN的数值
- 注:你给出的目标示例里
'Brown ball'为大小写笔误,代码生成的键名和原数据列名保持一致,为'Brown Ball',和其余条目的命名规则统一。
内容的提问来源于stack exchange,提问作者nattik
相关产品推荐
相关产品推荐

