【发布时间】:2018-08-07 16:01:52
【问题描述】:
我有一个对象,我想用其他值替换其中的某些值。
replacements = {
['object','timedelta[ns]']: 'varchar',
'float64': 'float',
'int64': 'int',
'datetime64': 'timestamp'
}
当我尝试运行TypeError: unhashable type: 'list'上方的命令时出现错误
我想让replacements 输入dataframe.dtypes.replace(replacements)
编辑:
添加 () 使其可散列:('object','timedelta[ns]'): 'varchar',
但现在收到此错误:
TypeError: Cannot compare types 'ndarray(dtype=object)' and 'tuple'
如果我删除 ('object','timedelta[ns]'): 'varchar', 任何想法,这不是问题吗?
【问题讨论】:
-
因为
['object','timedelta[ns]']不能是字典中的键,所以它是一个列表(不可散列)。这与replace无关。 -
一旦它是可散列的,我得到另一个错误,说我无法比较类型。但是如果我注释掉元组,这个错误就会消失。知道为什么会这样吗?
-
我猜猜你应该有单键:值对:
{'object': 'varchar', 'timedelta[ns]': 'varchar', ...}但我不能确定 -
使用
timedelta64[ns]。请参阅我的更新答案。 -
将它们分解为单个键值对会给我这个错误(TypeError:无法比较类型'ndarray(dtype = object)'和'str')。它仅适用于 timedelta[ns] 字符串。看起来字符串中的 [] 可能有问题