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

将含字典的列表转换为pandas DataFrame时遇报错求解决

解决列表含字典与np.nan转DataFrame的报错问题

报错原因

当你传入的列表第一个元素是字典时,pandas会默认把列表里所有元素都按字典格式解析,提取键作为列名。但你列表里的np.nan是float类型,没有keys()方法,直接触发了AttributeError。

解决方案

方案1:把np.nan改成对应结构的字典

如果想让第二行在aa列显示NaN,直接把np.nan替换成空字典,或者明确指定aa键对应NaN值的字典:

import pandas as pd
import numpy as np

# 方式1:用空字典
pd.DataFrame([{'aa': 10}, {}])

# 方式2:指定列的NaN值
pd.DataFrame([{'aa': 10}, {'aa': np.nan}])

两种方式都会生成符合预期的DataFrame:

aa
010
1NaN

方案2:先建DataFrame再追加行

先基于字典创建初始DataFrame,再添加含NaN的行(注意pandas版本差异):

import pandas as pd
import numpy as np

df = pd.DataFrame([{'aa': 10}])
# pandas 2.0及以上版本用_append
df = df._append({'aa': np.nan}, ignore_index=True)
# pandas 2.0以下版本用append
# df = df.append({'aa': np.nan}, ignore_index=True)

方案3:用pd.DataFrame.from_dict构造

把数据整理成规范的字典列表,再调用from_dict方法:

import pandas as pd
import numpy as np

data = [{'aa': 10}, {'aa': np.nan}]
df = pd.DataFrame.from_dict(data)

内容的提问来源于stack exchange,提问作者Brian Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:53:17