DataFrame 内の文字列がオブジェクトとして保存されるのはなぜですか?
文字列を含む DataFrame 列を文字列データ型に明示的に変換しているにもかかわらず、Python の Pandas ライブラリでは依然としてオブジェクトとして報告される可能性があります。この不一致は、NumPy の基礎となるデータ構造が原因で発生します。
NumPy は ndarray を使用してデータの配列を保存し、ndarray 内の各要素は固定バイト数を持ちます。整数 (int64) と浮動小数点数 (float64) の場合、各要素は 8 バイトを占有します。ただし、文字列は可変長であるため、文字列を ndarray に直接格納するのは現実的ではありません。
これに対応するために、Pandas はオブジェクト ndarray を使用してオブジェクトへのポインタを格納します。これらのオブジェクトには実際の文字列値が含まれています。その結果、オブジェクト ndarray のサイズは不定になり、「object」データ型として表されます。
例:
4 つの 64 ビットを含む int64 配列を考えてみましょう。整数と、3 つの文字列オブジェクトへの 4 つのポインターを含むオブジェクト配列:
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 中国語 Web サイトの他の関連記事を参照してください。