在Pandas DataFrame 新增映射列
使用pandas 時,基於現有列新增具有對應值的新欄位可以是一項簡單的任務。但是,某些方法可能會導致錯誤或困難。
一種常見的嘗試是將映射值直接分配給新列:
<code class="python">df["B"] = equiv(df["A"])</code>
但是,這將失敗,因為等效,表示字典,不是可調用函數。
另一個可能無法產生所需結果的方法是將map 與lambda 函數一起使用:
<code class="python">df["B"] = df["A"].map(lambda x: equiv[x])</code>
此表達式可能會引發KeyError,除非字典鍵與列值完全匹配。
正確的解決方案
添加映射列的正確方法是直接將映射與字典一起使用:
<code class="python">df["B"] = df["A"].map(equiv)</code>
此方法將使用equal 字典中的映射值建立一個新列B。如果字典中不存在某個鍵,則對應的行將被指派 NaN。
範例
考慮以下 DataFrame:
<code class="python">df = pd.DataFrame({"A": [7001, 8001, 9001]}) equiv = {7001: 1, 8001: 2, 9001: 3}</code>
應用正確的映射將產生所需的結果:
<code class="python">df["B"] = df["A"].map(equiv) print(df) A B 0 7001 1 1 8001 2 2 9001 3</code>
以上是如何有效地將映射列新增到 Pandas DataFrame 中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!