首页 > 解决方案 > 在 python pandas 中打开 json l 后如何跨字段聚合

问题描述

我正在从 json 对象中读取一些数据,然后使用 pandas.to_json() 将其转换为数据框。完成此操作后,我想通过计算特定变量的值数来对结果数据帧执行聚合。这是数据框的数据类型摘要。

df3.types
id        object
origin    object
dtype: object

当我尝试执行

df3.groupby(['origin']).count()

但这会产生错误

TypeError: unhashable type: 'dict'

我不清楚如何进行。

我已经尝试将 id 和 origin 显式转换为字符串,但这并没有让我有任何收获。在 RI 中,只需将原点转换为因子,而在 SQL 中,这将是一件轻而易举的事。谁能给我一个关于如何进行的建议?

标签: pythonjsonpandas

解决方案


错误中指出了解决方案的线索,我只是不明白错误。数据的格式为

id, origin
'someIdentifier', '{'id':'someNonUniqueIdentifer'}'

因此,解决方案是在数据帧内的单个元素字典中提取“id”的值,如下所示

df3['new_origin'] = [x['id'] for x in df3['origin']]

现在命令

df3.groupby(['new_origin']).count() works exactly as required.

感谢大家的帮助。


推荐阅读