這是一個資料框 - 'dist_copy' - 其值我想更改為分類。我只包含了一列,但我還想轉換其他列。
| 狀態 | dist_id | pct_free_reduced_lunch |
|---|---|---|
| 伊利諾伊州 | 1111 | 80% - 100% |
| 伊利諾伊州 | 1112 | 0 - 20% |
| 伊利諾伊州 | 2365 | 40% - 60% |
dist_copy.pct_free_reduced_lunch.unique()
回傳
array(['80% - 100%', '60% - 80%', '0 - 20%', '20% - 40%', '40% - 60%'], dtype=object)
以前,我曾經pd.Categorical將'pct_free_reduced_lunch'列中的所有值更改為'categorical',并使用以下代碼建立順序:
dist_copy['pct_free_reduced_lunch'] = pd.Categorical(dist_copy['pct_free_reduced_lunch'],
categories=['0 — 20%','20% — 40%', '40% — 60%', '60% — 80%', '80% - 100%'], ordered=True)
今天,此代碼不起作用,僅保留第一個值,將所有其他值更改為 NaN。
| 狀態 | dist_id | pct_free_reduced_lunch |
|---|---|---|
| 伊利諾伊州 | 1111 | 80% - 100% |
| 伊利諾伊州 | 1112 | NaN |
| 伊利諾伊州 | 2365 | NaN |
我做錯了什么或誤解了什么?
更新:在我按照所需的順序將回傳的陣列中的每個分類值復制粘貼unique()到pd.Categorical函式內部的分類陣列中后,上面的代碼開始作業。
當我只是從頭開始輸入它們時,就創建了 NaN。
為什么?我真的很想知道!
uj5u.com熱心網友回復:
您正在使用破折號而不是連字符作為您的categories論點,除了'80% - 100%'. 但是在資料中只有連字符,因此幾乎都'80% - 100%'變成了NaN.
嘗試使用categories=sorted(dist_copy.pct_free_reduced_lunch.unique())以避免這種型別的錯字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/340433.html
