ホームページ >バックエンド開発 >Python チュートリアル >文字列を含む Pandas DataFrame 列に文字列に変換した後でも「dtype object」が表示されるのはなぜですか?

文字列を含む Pandas DataFrame 列に文字列に変換した後でも「dtype object」が表示されるのはなぜですか?

DDD
DDDオリジナル
2024-10-26 07:24:02636ブラウズ

Why does a Pandas DataFrame column with strings show

DataFrame 内の文字列ですが、dtype はオブジェクトです

一部のユーザーは、特定の列に「dtype オブジェクト」が表示されている Pandas DataFrame に遭遇しました。明示的に文字列に変換した後でも、それらの列内のすべての項目は文字列です。この動作を理解するには、Pandas と NumPy のデータ型の性質を詳しく調べる必要があります。Pandas の基礎となるライブラリである

NumPy は、データ型を int64、float64、および object として特徴付けます。 「オブジェクト」dtype は、NumPy 配列内の要素が、整数や浮動小数点の場合のように、バイト単位での均一な固定サイズではないことを示します。

文字列の場合、その長さは変化するため、直接格納されます。配列内の文字列バイトは実用的ではありません。代わりに、Pandas は文字列オブジェクトへのポインターを格納する「オブジェクト配列」を利用します。このアプローチは、文字列を含む列に対して dtype がオブジェクトである理由を説明します。

次の例を考えてみましょう:

import numpy as np
import pandas as pd

# Create a NumPy array of integers
int_array = np.array([1, 2, 3, 4], dtype=np.int64)

# Create a NumPy array of strings
object_array = np.array(['a', 'b', 'c', 'd'], dtype=np.object)

# Convert the object array to pandas DataFrame
df = pd.DataFrame({'INTS': int_array, 'STRINGS': object_array})

# Check the data types
print(df.dtypes)

# Print the lengths of the first item in each column
print(len(df['INTS'].iat[0]))
print(len(df['STRINGS'].iat[0]))

出力は次のようになります:

INTS         int64
STRINGS      object
dtype: object
1
1

可能な限りすべての要素が 8 バイトの整数であるため、「INTS」列の dtype は int64 です。 「STRINGS」列は、その要素が文字列オブジェクトへのポインタであるため、オブジェクトの dtype を持ちます。出力からわかるように、各文字列の長さは異なります。

以上が文字列を含む Pandas DataFrame 列に文字列に変換した後でも「dtype object」が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。