Python-熊猫描述了抛出错误:无法散列的类型“ dict”

时间:2018-10-25 20:28:10

标签: python json pandas socrata

更新:我正在使用“ Socrata开源API”中的一些示例代码。我在代码中注意到以下注释:

# First 2000 results, returned as JSON from API / converted to Python 
# list of dictionaries by sodapy.

我不熟悉JSON。

我已经下载了一个数据集,并创建了一个具有大量列的DataFrame'df'。

df = pd.DataFrame.from_records(results)

当我尝试使用describe()方法时,出现“ TypeError:不可哈希类型:'dict'”:

df.describe()
...
TypeError: unhashable type: 'dict'

如何识别产生此错误的列?

更新2: 根据Yuca的要求,我提供了df的摘录:

enter image description here

3 个答案:

答案 0 :(得分:6)

我今天遇到了同样的问题,并对不同版本的pyarrow做了一些研究。 here我发现,过去(<0.13),pyarrow会为索引写具有名称的实际数据列。在pyarrow的最新版本中,将没有列数据,但有范围索​​引元数据标记代替。这意味着用较新版本的pyarrow生成的拼花文件无法由较旧版本读取。

答案 1 :(得分:2)

pandas0.25.3可以读取包含字典的json,显然pandas1.0.1没那么多

df = pd.read_json(path,lines=True)
TypeError: unhashable type: ‘dict’ 

pandas1.0.1对于在pandas0.25.3中工作的同一文件抛出上述错误。

问题是tracked,显然是在master中解决的,我想它将成为下一个版本。

答案 2 :(得分:0)

感谢用户社区(h / t G Anderson),我整理了一个解决方案:

DECLARE
  val   VARCHAR2(25) := 'Test';
  aRow  SOME_TABLE%ROWTYPE;
BEGIN
  SELECT *
    INTO aRow
    FROM SOME_TABLE
    WHERE NAME = val;
END;

transform(type).any()检查列i中的所有元素,如果元素是dict类型,则删除该列。

谢谢大家!