pandas astype():str vs 'string' 与 StringDtype

Ste*_*ost 6 python python-3.x pandas

有很多关于 pandas 中对象与字符串数据类型的帖子。我已经在很大程度上理解了这种区别。我不明白这三个选项之间的区别:

some_series.astype(str)
some_series.astype('string')
some_series.astype(pd.StringDtype())
Run Code Online (Sandbox Code Playgroud)
  • 第一个选项将 Series 的 dtype 转换为对象类型。
  • 第二个选项保留 pd.NA(在 Jupyter 中显示为 <NA>),即可以为 null 的字符串类型。
  • 据我所知,第三个选项的行为似乎与第二个选项完全相同:也是可为空的字符串类型。

此外,如果执行 astype() 后我检查第二个和第三个选项的 dtype,两者都会返回相同的输出:string[python]

为了简单起见,我可以只使用 astype('string') 而不是 astype(pd.StringDtype()) 并获得完全相同的行为,包括转换仅具有整数/浮点数的系列或此类数字数据的可为空版本类型?astype('string') 和 astype(pd.StringDtype()) 都在内部映射到 StringDtype 吗?我在 pandas 文档(或其他 stackoverflow 帖子)中找不到关于这一点的明确说明。谢谢您的帮助。

使用:

  • 熊猫1.4.1
  • 蟒蛇3.10.4

Ste*_*ost 4

Pandas 文档解释说“string”是 StringDtype 的别名。请参阅下面的链接:
Pandas dtype 别名