2024-04-23 18:58:44 发布
网友
pandas.DataFrame(columns=('code', 'name', ['aa', 'ab']))
我想创建一个dataframe,使用一个列表来指定一些列名,但是我得到了以下错误:
*** TypeError: unhashable type: 'list'
如何修复?你知道吗
使用元组而不是列表:
>>> pandas.DataFrame(columns=('code', 'name', ('aa', 'ab'))) Empty DataFrame Columns: [code, name, (aa, ab)] Index: []
字典键必须是“可散列的”,这意味着给定相同的键值,您将始终得到相同的响应(https://docs.python.org/2/glossary.html),即使这些值存储在不同的内存位置。你知道吗
考虑以下几点:
>>> hash(('a','b')), hash(('a','b')) (-3816799034373630758, -3816799034373630758) >>> id(('a','b')), id(('a','b')) (4329654248, 4369596640)
这两个项具有不同的id(即,它们存储在内存中的不同位置),但它们具有相同的哈希值;因此,元组的哈希是使用组成元组的位的哈希实现的。你知道吗
列表没有定义__hash__方法。即使是这样,哈希值在对象的整个生命周期中也不会相同。这是因为列表是可变的;向列表中添加新元素会更改其哈希值。你知道吗
__hash__
您需要一个iterable,例如list。记住['a'] + ['b'] = ['a', 'b']。你知道吗
['a'] + ['b'] = ['a', 'b']
columns=['code', 'name'] + ['aa', 'ab'] >>> columns ['code', 'name', 'aa', 'ab']
使用元组而不是列表:
字典键必须是“可散列的”,这意味着给定相同的键值,您将始终得到相同的响应(https://docs.python.org/2/glossary.html),即使这些值存储在不同的内存位置。你知道吗
考虑以下几点:
这两个项具有不同的id(即,它们存储在内存中的不同位置),但它们具有相同的哈希值;因此,元组的哈希是使用组成元组的位的哈希实现的。你知道吗
列表没有定义
__hash__
方法。即使是这样,哈希值在对象的整个生命周期中也不会相同。这是因为列表是可变的;向列表中添加新元素会更改其哈希值。你知道吗您需要一个iterable,例如list。记住
['a'] + ['b'] = ['a', 'b']
。你知道吗相关问题 更多 >
编程相关推荐