ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【Python】astype("str")とastype(str)の違いについて考えてみる

以下の2つの処理の違いがわからなかったので調べてみました。

  • その1
df["hoge"].astype("str").str.zfill(12)
  • その2
df["hoge"].astype(str).str.zfill(12)

処理の比較

その1

  • astype("str") は NumPy の dtype "str"(固定長の文字列型)を指定しており、内部的には np.str_ 型になる。
  • 非推奨ではないが、Pandas では Python の組み込み型を明示的に使うほうが一般的とのこと。

その2

  • astype(str) は Python の組み込み関数 str を使って変換
  • Pandas のドキュメントでもこちらの形式が主に使われており、より推奨される書き方

結果の違い

  • 通常の使い方では 出力結果は全く同じ
  • astype("str") の場合、内部的に NumPy の固定長文字列型に変換されるため、予期せぬ切り捨てが起きる可能性があり(長い文字列や特殊文字を扱うとき)
  • astype(str) は柔軟で、Python の str() に準じた変換になるため、安全で汎用的