首页  >  文章  >  后端开发  >  为什么 Pandas DataFrame 中的字符串在转换后仍显示为对象?

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

Patricia Arquette
Patricia Arquette原创
2024-10-25 21:25:29997浏览

 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 个字节。另一方面,对象数组存储指向不同大小的对象的指针,因此是“对象”数据类型。

以上是为什么 Pandas DataFrame 中的字符串在转换后仍显示为对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn