資料型別

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。