列表嵌套字典转Pandas DataFrame时NaN异常的解决方法
正确实现方法
你遇到NaN的核心原因是原始数据结构里每款香烟的所有属性被拆分成了多个独立的单键字典,直接传入DataFrame时每个单键字典会被识别为单独的行,自然只有对应键有值,其余列全部为空。
你只需要先把每个子列表里的所有单键字典合并为一个包含该香烟全部属性的完整字典,再构造DataFrame即可,代码如下:
import pandas as pd # 假设你的原始数据存储在cig_list变量中 processed_cig_list = [] for cig_item in cig_list: # 合并当前香烟的所有单键属性字典 merged_cig = {} for attr_dict in cig_item: merged_cig.update(attr_dict) processed_cig_list.append(merged_cig) # 直接构造DataFrame即可,无NaN错位问题 df = pd.DataFrame(processed_cig_list)
如果想要更简洁的写法,可以用字典推导式实现合并逻辑:
processed_cig_list = [ {k:v for d in item for k,v in d.items()} for item in cig_list ] df = pd.DataFrame(processed_cig_list)
运行后输出的DataFrame列会自动匹配所有属性键,每一行对应一款香烟的完整数据,不会出现NaN错位问题。
内容的提问来源于stack exchange,提问作者Jordan Anderson
相关产品推荐
相关产品推荐

