”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么 Pandas DataFrame 中的字符串在转换后仍显示为对象?

为什么 Pandas DataFrame 中的字符串在转换后仍显示为对象?

发布于2024-11-08
浏览:391

 Why do Strings in Pandas DataFrames Appear as Objects Even After Conversion?

为什么 DataFrame 中的字符串存储为对象?

尽管将包含字符串的 DataFrame 列显式转换为字符串数据类型,Python 的 Pandas 库仍可能将它们报告为对象。这种差异是由于 NumPy 的底层数据结构造成的。

NumPy 使用 ndarray 来存储数据数组,ndarray 中的每个元素都有固定数量的字节。对于整数(int64)和浮点数(float64),每个元素占用8个字节。然而,字符串的长度是可变的,因此将它们直接存储在 ndarray 中是不切实际的。

为了适应这一点,Pandas 使用对象 ndarray 来存储指向对象的指针。这些对象包含实际的字符串值。因此,对象 ndarray 的大小不确定,并表示为“对象”数据类型。

示例:

考虑一个包含四个 64 位的 int64 数组整数和一个包含四个指向三个字符串对象的指针的对象数组:

int64 array: | 1 | 2 | 3 | 4 |
object array: | pointer to "hello" | pointer to "world" | pointer to "!" |

Visualization:

 --------- ----------- 
| int64    |  object   |
|--------- -----------|
| 1        | hello     |
| 2        | world     |
| 3        | !         |
| 4        | null      |
 --------- ----------- 

在此表示中,int64 数组占用固定的空间量,每个元素为 8 个字节。另一方面,对象数组存储指向不同大小的对象的指针,因此是“对象”数据类型。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3