考虑一下 numpy.array
i
i = np.empty((1,), dtype=object)
i[0] = [1, 2]
i
array([list([1, 2])], dtype=object)
例子1
index
df = pd.DataFrame([1], index=i)
df
0
[1, 2] 1
实施例2但
columns
df = pd.DataFrame([1], columns=i)
当我显示它导致
df
TypeError: unhashable type: 'list'
但是,df.T
有效!!
问题
为什么索引值必须在列上下文中可散列而不在索引上下文中可散列?为什么只在显示时显示呢?
这是因为熊猫如何在内部确定DataFrame
对象的字符串表示形式。本质上,此处的列标签和索引标签之间的区别在于,该列确定字符串表示形式的格式(因为该列可以是float,int等)。
由于熊猫为字典中的每一列存储了一个单独的格式化程序对象,并且使用列名检索了该对象,因此发生了错误。具体来说,触发错误的行是https://github.com/pandas-dev/pandas/blob/d1accd032b648c9affd6dce1f81feb9c99422483/pandas/io/formats/format.py#L420
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句