【问题标题】:Question on Pandas -> Exception Ignored: Unhashable Type: 'numpy.ndarray'关于 Pandas 的问题-> 忽略异常:不可散列类型:'numpy.ndarray'
【发布时间】:2021-05-25 22:27:55
【问题描述】:

我通过按两个值分组创建了一个 pandas DataFrame,并收到了一个类似于下面的表格:

First Name Column A
Samuel [1,2,3]
Joshua [4,5,6]
Richard [7,8,9]
Michael [7,8,9]
Henry [7,8,9]

接下来,我按 A 列分组,计算出每个数字列表有多少个唯一名字,并收到以下错误:

Exception ignored in: 'pandas._libs.index.IndexEngine._call_map_locations'
Traceback (most recent call last):
  File "pandas\_libs\hashtable_class_helper.pxi", line 4588, in > pandas._libs.hashtable.PyObjectHashTable.map_locations
TypeError: unhashable type: 'numpy.ndarray'

当我收到一个索引为 numpy 数组类型的熊猫系列时,我感到很困惑。为什么在这种情况下会忽略异常?

【问题讨论】:

  • column A 转换为string。将其视为字符串而不是列表。这是黑客之一
  • 或将它们设为元组。然后你可以分组
  • 你用的是什么版本?
  • 该错误暗示它试图使用字典或其他散列映射来创建组。但是numpy 数组不能用作dict 键。它似乎已经发现了错误,将其显示出来,然后转向其他分组方法。

标签: python pandas numpy exception typeerror


【解决方案1】:

尝试通过df['Column A'].map(tuple)df['Column A'].map(str) 将列表转换为元组

df.groupby(df['Column A'].map(tuple))['First Name'].unique()

Column A
(1, 2, 3)                     [Samuel]
(4, 5, 6)                     [Joshua]
(7, 8, 9)    [Richard, Michael, Henry]
Name: First Name, dtype: object

【讨论】:

  • 感谢您的反馈。转换为字符串或元组将删除错误消息,但我的问题是为什么会忽略异常并创建表。索引是 numpy 数组,Series 仍然被创建,我不确定它为什么仍然被创建。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 2020-01-24
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
相关资源
最近更新 更多