Python Pandas 中的 StringDtype 物件與 object 資料型別有何區別?
Pandas 不僅可以將文字資料作為物件包含在內,還可以包含 Pandas 不理解的任何其他資料。這意味著,如果您說當某一列為 Object 資料型別時,並不意味著該列中的所有值都將是字串或文字資料。實際上,它們可能是數字,或者字串、整數和浮點數資料型別的混合。因此,由於這種不相容性,我們無法直接對該列執行任何字串操作。
由於此問題,從 Pandas 1.0 版本開始引入了字串資料型別,但我們需要顯式定義它。
請檢視一些示例,以瞭解 StringDtype 和 object 資料型別有何區別。
示例
list_ = ['python',90, 'string',2] # assign a list ds = pd.Series(list_) # create a Series print(ds) # print series print() print(type(ds[1])) # display type of 2nd element from dataSeries
解釋
以上程式碼建立了一個包含 3 個元素的 Pandas Series,這些元素包含字串和整數。在最後一行,我們嘗試獲取第二個元素的資料型別。
輸出
0 python 1 90 2 string 3 2 dtype: object <class 'int'>
我們可以清楚地看到 ds Series 的資料型別是 object,但是如果您嘗試獲取第二個元素的型別,它會將輸出返回為整數,而不是 object 或字串。因此,可以得出結論,object 資料型別不僅儲存文字資料,而且是所有資料的混合。
示例
這裡將 pd.StringDtype() 顯式定義為 Pandas series 方法的 dtype 引數。
list_ = ['python',90, 'string'] ds = pd.Series(list_, dtype=pd.StringDtype()) print(ds) print() print(type(ds[1]))
解釋
在此示例中,我們透過將 dtype 引數值分配為字串來更改 series 的預設資料型別。然後我們再次嘗試顯示 series ds 中第二個元素的型別。
輸出
0 python 1 90 2 string dtype: string <class 'str'>
series ds 的輸出資料型別是字串,並且 ds 的第二個元素的型別也是字串。因此,我們可以理解,StringDtype 資料型別將更改所有資料型別。
透過將 StringDtype 定義為文字資料,這不會給執行字串操作帶來任何困難。這就是建議使用 StringDtype 儲存所有文字資料的原因。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP