作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在浏览 pandas 0.24.1 版本文档时 here ,我看到了这个说法。“所有 pandas 数据结构都是值可变的(它们包含的值可以更改),但大小并不总是可变的。Series 的长度无法更改,但例如,可以将列插入到 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
根据我的推断,size immutable 的含义是不允许添加和删除元素之类的操作,但事实显然并非如此。甚至对象的身份也保持不变,排除了创建同名新对象的可能性。那么,大小不变性实际上意味着什么?
最佳答案
允许添加和删除,但这并不一定意味着该系列是可变的。
Series/DataFrames 在内部由 NumPy 数组表示,这些数组是不可变的(固定大小),以允许更紧凑的内存表示和更好的性能。
当您分配给系列时,您实际上是在调用 Series.__setitem__
(然后委托(delegate)给NDFrame.__loc__
)创建一个新数组。然后这个新数组被分配回同一个系列(当然,作为最终用户,你看不到这一点),给你一种可变性的错觉。
关于python - pandas 数据结构中的大小不变性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54587158/
我是一名优秀的程序员,十分优秀!