首頁  >  文章  >  後端開發  >  為什麼帶有字串的 Pandas DataFrame 列即使在轉換為字串後仍顯示“dtype object”?

為什麼帶有字串的 Pandas DataFrame 列即使在轉換為字串後仍顯示“dtype object”?

DDD
DDD原創
2024-10-26 07:24:02550瀏覽

Why does a Pandas DataFrame column with strings show

DataFrame 中的字串,但dtype 是物件

有些使用者遇到Pandas DataFrame,其中某些欄位顯示「dtype object ”,即使這些列中的每個項目都是字串,即使在明確轉換為字串之後也是如此。要理解這種行為,有必要深入研究 Pandas 和 NumPy 中資料類型的本質。

NumPy 是 Pandas 的底層函式庫,將資料型別描述為 int64、float64 和 object。 「object」資料型態表示 NumPy 陣列中的元素不是統一的、固定的位元組大小,就像整數或浮點數的情況一樣。

對於字串,它們的長度各不相同,因此可以直接儲存數組中的字串位元組不切實際。相反,Pandas 使用「物件陣列」來儲存指向字串物件的指標。這種方法解釋了為什麼包含字串的列的資料類型是物件。

考慮以下範例:

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

你可以請注意,「INTS」欄位的資料類型為int64,因為它的所有元素都是8 個位元組整數。 “STRINGS”列具有物件的資料類型,因為它的元素是指向字串物件的指標。每個字串的長度不同,如輸出所示。

以上是為什麼帶有字串的 Pandas DataFrame 列即使在轉換為字串後仍顯示“dtype object”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn