在用於資料分析的流行Python 庫Pandas 中,您可能會遇到以下情況:您的DataFrame 包含看似字串值的列,但dtype 屬性將它們指示為「物件」。將物件明確轉換為字串後,可能會出現此異常。
物件資料類型的原因:
混亂源自於 NumPy 陣列的底層實現,它將資料儲存在資料框中。 NumPy 陣列需要相同大小的元素(以位元組為單位)。對於整數 (int64) 和浮點數 (float64) 等基本類型,大小是固定的(8 位元組)。然而,字串的長度是可變的。
為了適應這種可變性,Pandas 不會將字串位元組直接儲存在陣列中。相反,它會建立一個包含指向字串物件的指標的「物件」陣列。這導致 dtype 為“object”。
範例:
考慮以下DataFrame:
<code class="python">df = pd.DataFrame({ "id": [0, 1, 2], "attr1": ["foo", "bar", "baz"], "attr2": ["100", "200", "300"], })</code>
如果我們檢查在列中,我們看到attr2 的資料類型為「object 」:
<code class="python">print(df.dtypes) # Output: # id int64 # attr1 object # attr2 object</code>
轉換為字串:
當我們明確將attr2 轉換為字串時,Pandas 會執行以下操作:不改變底層存儲機制:
<code class="python">df["attr2"] = df["attr2"].astype(str)</code>
因此,attr2 保留資料類型「object」。
附加資訊:
以上是為什麼我的 Pandas DataFrame 具有帶有'object”dtype 的字串列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!