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中文網其他相關文章!