資料型別
dtypes 不是大熊貓的原生。它們是大熊貓與 numpy 緊密結合的結果。
列的 dtype 無論如何都不必與列中包含的物件的 python 型別相關聯。
在這裡,我們有一個帶浮筒的 pd.Series
。dtype 將是 float
。
然後我們使用 astype
將它轉換為物件。
pd.Series([1.,2.,3.,4.,5.]).astype(object)
0 1
1 2
2 3
3 4
4 5
dtype: object
dtype 現在是物件,但列表中的物件仍然是浮動的。邏輯如果你知道在 python 中,一切都是一個物件,並且可以被提升為物件。
type(pd.Series([1.,2.,3.,4.,5.]).astype(object)[0])
float
在這裡,我們嘗試將浮動轉換為字串。
pd.Series([1.,2.,3.,4.,5.]).astype(str)
0 1.0
1 2.0
2 3.0
3 4.0
4 5.0
dtype: object
dtype 現在是 object,但列表中條目的型別是 string。這是因為 numpy
不處理字串,因此就好像它們只是物件而不關心。
type(pd.Series([1.,2.,3.,4.,5.]).astype(str)[0])
str
不要相信 dtypes,它們是熊貓建築缺陷的神器。儘可能指定它們,但不要依賴於列上設定的 dtype。