pandas.DataFrame(columns=('code', 'name', ['aa', 'ab']))
我想創建一個數據幀,使用列表來指定一些列名的,但我得到這個錯誤:使用列表來指定大熊貓列
*** TypeError: unhashable type: 'list'
如何解決呢?
pandas.DataFrame(columns=('code', 'name', ['aa', 'ab']))
我想創建一個數據幀,使用列表來指定一些列名的,但我得到這個錯誤:使用列表來指定大熊貓列
*** TypeError: unhashable type: 'list'
如何解決呢?
你想要一個迭代如列表。請記住,['a'] + ['b'] = ['a', 'b']
。
columns=['code', 'name'] + ['aa', 'ab']
>>> columns
['code', 'name', 'aa', 'ab']
使用一個元組,而不是一個列表:
>>> 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__
方法。即使他們這樣做了,散列值在對象的整個生命週期中也不會相同。這是因爲列表是可變的;在列表中添加一個新元素將會改變其哈希值。