使用列表指定列

2024-04-23 18:58:44 发布

您现在位置:Python中文网/ 问答频道 /正文

pandas.DataFrame(columns=('code', 'name', ['aa', 'ab']))

我想创建一个dataframe,使用一个列表来指定一些列名,但是我得到了以下错误:

*** TypeError: unhashable type: 'list'

如何修复?你知道吗


Tags: columnsnamedataframepandas列表abtype错误
2条回答

使用元组而不是列表:

>>> 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__方法。即使是这样,哈希值在对象的整个生命周期中也不会相同。这是因为列表是可变的;向列表中添加新元素会更改其哈希值。你知道吗

您需要一个iterable,例如list。记住['a'] + ['b'] = ['a', 'b']。你知道吗

columns=['code', 'name'] + ['aa', 'ab'] 
>>> columns
['code', 'name', 'aa', 'ab']

相关问题 更多 >