熊猫数据结构中的大小不变性

时间:2019-02-08 06:37:32

标签: python pandas

在遍历pandas 0.24.1 here版文档时,我遇到了此声明。 “所有大熊猫的数据结构都是值可变的(它们包含的值可以更改),但并不总是大小可变的。系列的长度不能更改,但是例如可以将列插入到DataFrame中。”

import pandas as pd
test_s = pd.Series([1,2,3])
id(test_s) # output: 140485359734400 (will vary)
len(test_s) # output: 3
test_s[3] = 37
id(test_s) # output: 140485359734400
len(test_s) # output: 4

根据我的推断,大小不可变的含义是不允许进行诸如添加和删除元素之类的操作,显然情况并非如此。甚至对象的身份也保持不变,从而排除了使用相同名称创建新对象的可能性。 那么,尺寸不变性到底是什么意思?

1 个答案:

答案 0 :(得分:2)

允许添加和删除,但这并不一定意味着该系列是可变的。

Series / DataFrame在内部由不可变(固定大小)的NumPy数组表示,以允许更紧凑的内存表示和更好的性能。

分配给一个Series时,实际上是在调用Series.__setitem__(然后委托给NDFrame.__loc__)来创建一个新数组。然后,将这个新数组分配回同一系列(当然,作为最终用户,您不会看到它),给您错觉的幻觉。