为什么可以将列表作为值的索引却不能将列作为索引呢?

海盗

考虑一下 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么作为功能的Angular控制器可以工作,而封装中的控制器却不能工作呢?

为什么foldr可以在Haskell中的无限列表上工作,而foldl却不能呢?

为什么C ++中的void方法可以返回void值,而在其他语言中却不能呢?

为什么推断类型可以转换为索引集合,而看似相同的显式类型却不能?

为什么ArrayLists可以存储不同的对象,而数组却不能呢?

为什么String尽管是字符数组,却不能作为“按引用传递”

将列表传递给熊猫系列作为索引

为什么可以使用布尔值作为列表索引?

为什么我可以进场却不能进场?

为什么FileOutputStream的write()方法可以写一个字符,而OutputStreamWriter的却不能呢?

为什么我可以释放内存两次,但是在不同情况下却不能呢?

为什么C#无法将两种对象类型相互比较,而VB却不能呢?

为什么我的Groovy脚本在Jenkins脚本控制台中运行却不能作为Groovy Postbuild脚本运行?

为什么在打印值时循环工作,但在将它们添加到列表时却不能工作?

为什么我不能使用u8作为Rust数组的索引值?

为什么将指向字符串值的指针更改为另一个字符串却不能直接更改字符串的值呢?

为什么用xor交换在c ++中可以正常工作,而在java中却不能呢?一些困惑

为什么我可以在不声明C的情况下在C中调用函数,而在C ++中却不能呢?

为什么有时可以使用NodeJS缓冲区连接音频数据,而有时却不能呢?

为什么在FireFox中可以使用脚本控制台编辑DOM,而在IE 11中却不能呢?

为什么我可以使用 True 或 False 作为列表的索引?

大熊猫可以使用列作为索引吗?

PHP-PDO获取结果集,其中列作为索引,列作为值

pandas数据框to_dict两列作为索引,第三列作为值

为什么我的扬声器可以工作,但耳机却不能工作?

为什么`int;`可以在C语言中很好地编译,而在C ++中却不能?

为什么bash test.sh可以工作,而./test.sh却不能工作?

为什么可以在PHP中覆盖实例变量,而在Java中却不能?

为什么对于同一Backbone集合,fetch()可以工作,而sync()却不能工作?