首頁  >  文章  >  後端開發  >  為什麼我的 Pandas DataFrame 僅包含字串的列具有物件資料類型?

為什麼我的 Pandas DataFrame 僅包含字串的列具有物件資料類型?

Patricia Arquette
Patricia Arquette原創
2024-10-25 22:50:02798瀏覽

Why Does My Pandas DataFrame Column With Only Strings Have an Object Dtype?

理解 Pandas DataFrame 中的物件 Dtype

在 Pandas 中,dtype 物件表示包含物件的欄位。然而,當列中的所有元素都顯示為字串時,這可能會令人困惑。

根本原因:物件指標數組

物件資料型別源自 NumPy 的 ndarray 實作。在 NumPy 中,陣列必須具有統一大小(以位元組為單位)的元素。由於字串具有可變長度,Pandas 將字串儲存為指向物件 ndarray 中的物件的指標。這會產生物件資料類型。

說明性範例

考慮以下範例:

import numpy as np
import pandas as pd

# Create an int64 ndarray
int_arr = np.array([1, 2, 3, 4], dtype=np.int64)

# Create an object ndarray containing pointers to string objects
obj_arr = np.array(['a', 'b', 'c', 'd'], dtype=object)

# Convert obj_arr to a Pandas DataFrame
df = pd.DataFrame({'int_col': int_arr, 'obj_col': obj_arr})

# Check data types
print(df.dtypes)

輸出:

int_col    int64
obj_col    object

如您所見儘管所有元素都是字串,但由於ndarray 中使用了指針,obj_col 具有物件資料類型。

結論

Pandas DataFrames 中的物件資料型別源自底層 ndarray 實作。雖然它包含字串,但請務必注意,字串並未明確表示為不同的資料類型。相反,它們被儲存為指向物件 ndarray 中的物件的指標。

以上是為什麼我的 Pandas DataFrame 僅包含字串的列具有物件資料類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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