【发布时间】: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