【问题标题】:Weird error with unique() for pandas dataframe熊猫数据框的 unique() 出现奇怪错误
【发布时间】:2020-05-01 01:01:46
【问题描述】:

不幸的是,我无法生成可复制的示例,但这是我遇到的问题 - 使用一个数据框,我能够遍历列并保存每列唯一值的计数。使用另一个数据帧,它与第一个数据帧具有相同的列和数据——唯一的区别是第二个数据帧都是对象 dtypes,而第一个数据帧有一些整数和浮点数——我遇到了一个“不可散列的类型:‘dict’ ' 错误。

这行得通:

for col in olddf.columns:
    unique = len(olddf[col].unique())
    print(col, unique)

我得到一个不可散列的类型:'dict' 错误:

for col in orig_results.columns:
    unique = len(orig_results[col].unique())

就像我提到的,很遗憾,我无法想出一个示例数据集来复制。想知道是否有人对可能发生的事情有一个大致的了解?谢谢!

【问题讨论】:

  • 为了调试,在unique = ... 行之前添加pring(col),这样您就知道是哪一列导致了问题。然后,您可以查看它以查看问题所在。从您的错误消息来看,该列似乎包含字典对象,这可能会导致错误。
  • 正如@TYZ 所说,使用try ..except 打印导致错误的列名。
  • @TYZ 啊谢谢!这样做我能够在“cross_street_1”找出错误。但是,当我单独在此列上执行该行时 - len(orig_df['cross_street_1'].unique()),它可以工作......不知道为什么它不会在循环中工作。
  • @ChristineJiang 你能粘贴orig_df['cross_street_1'].unique()的结果吗?
  • @CavinDsouza 是的! array([nan, 'DUMONT AVENUE', 'OCEAN PROMENADE', ..., 'STORER AVENUE', 'ILYSE COURT', 'REDGRAVE AVE'], dtype=object)

标签: python pandas dataframe unique


【解决方案1】:

原来是位置列引发错误,其中包含字典作为值:{'latitude': '40.7388739110531', 'longitude': '40.738873911'}。由于字典是不可散列的,我们无法获得唯一计数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 2016-10-18
    • 2021-06-17
    • 2017-05-02
    • 1970-01-01
    • 2017-02-14
    相关资源
    最近更新 更多