簡體   English   中英

無法使用 read_csv 將列轉換為類別 dtypes Pandas

[英]Can't convert column to category dtypes Pandas with read_csv

我有來自 csv 的數據,並在 Pandas 中使用 read_csv 加載它。 我嘗試將 6 列轉換為 float32 並且它的工作,但類別列未轉換..

我檢查了我的“div”列,沒有問題:

df_concat['div'].unique()

array(['L', 'J', 'K', 'U', 'E', 'B', 'A', 'C', 'N', 'X', 'M', 'O', 'D',
       'I', 'P', 'Q', 'S', 'R', 'T'], dtype=object)

我嘗試使用 nrows=4000000 限制數據,並且成功轉換為類別 dtypes? 它出什么問題了?

這是我的代碼:

names = ['bdate', 'nama_site', 'kode_store', 'div', 'merdivdesc', 'cat', 'catdesc', 'subcat', 'subcatdesc', 'brand', 'sku', 'sku_desc', 'tillcode', 'netsales', 'profit', 'margin', 'qty']

dtype = {
    'netsales' : 'float32', 'profit' : 'float32', 'margin' : 'float32', 'qty' : 'float32',
    'div' : 'category'
}

data = pd.read_csv('clean_jan20_minified.csv', sep='|', dtype=dtype, chunksize=20000, names=names, skiprows=[0], nrows=4000000)

chunk_list = []  
for chunk in data:  
    chunk_list.append(chunk)

df_concat = pd.concat(chunk_list, ignore_index=True)

當我嘗試使用df_concat['div']=df_concat['div'].astype('category')手動轉換時,它可以工作。 但我需要在 read_csv 時轉換它

使用pd.concat時,您似乎丟失了類別數據類型。

請參閱本文上方的文章末尾的一般准則: https://pbpython.com/pandas_dtypes_cat.html

"在這種情況下,數據仍然存在,但類型已轉換為 object。再一次,這是 pandas 嘗試組合數據而不拋出錯誤但不進行假設。如果您想立即轉換為類別數據類型, 你可以使用 astype('category')。 "

此外,您可能想根據這篇文章嘗試.reorder_categoriespandas - concat 與相同類別的列轉為 object

如果沒有樣本數據,我無法幫助您進行故障排除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM