【发布时间】:2020-02-14 16:47:10
【问题描述】:
当尝试使用 json_normalize 函数对 pandas 数据帧中的系列进行规范化时,出现错误:
"AttributeError: 'float' object has no attribute 'items'"
该系列的每一行都包含一个嵌套的 json,尽管有些行不包含该系列中某些 json 中存在的所有属性
在那些嵌套的 json 中还有一个字段 "timestamp":{"$date":1578411194000},它也存在于同一数据框的另一列中,这给了我在另一个尝试展平其他系列时出错。
我假设AttributeError 与不是所有包含所有字段的 JSON 或某事有关。那些timestamps.json_normalize 确实适用于其他一些df-columns。
我希望这是足够的信息。提前非常感谢!
【问题讨论】:
-
该错误是因为您可能正在循环某个级别,然后值不是另一个字典,而是一个浮点数。您可以通过检查
hasattr(7.0, 'items')之类的内容来处理这些不同的情况,除了使用您的变量而不是7.0 -
我通过使用 json.loads 而不是 pd.read_json 加载数据解决了错误,之后 json_normalize 运行良好。至于条件语句,我使用了类似 normalized_data = json_normalize([x for x in df['column'] if ('key' in x)]) 而不是 hasattr()。
-
请回答您自己的问题。否则,如果有人搜索没有答案的问题,就会找到此帖子。