將字典值對應到新的Pandas 欄位
處理Pandas 資料幀時,可能存在需要新增基於新列的情況基於現有列的映射值。為了實現這一點,一個常見的誤解是使用 equal 函數作為新列分配中的參數。但是,這會導致錯誤,因為 equal 不是可呼叫函數。
正確的方法是使用 Pandas 地圖函數。基於字典中的映射值新增列的語法如下:
df["new_column"] = df["existing_column"].map(mapping_function)
mapping_function 是一個接受現有列的值並傳回所需映射值的函數。在這種情況下,映射函數是一個lambda 函數,它利用字典equal 來檢索對應的映射值:
mapping_function = lambda x: equiv[x]
透過利用此方法,資料幀df 將使用新列「B」進行更新包含基於提供的字典的「A」欄位中的對應值:
import pandas as pd equiv = {7001:1, 8001:2, 9001:3} df = pd.DataFrame({"A": [7001, 8001, 9001]}) df["B"] = df["A"].map(lambda x: equiv[x]) print(df)
輸出:
A B 0 7001 1 1 8001 2 2 9001 3
此方法無縫處理金鑰不存在於字典,如下例:
equiv = {7001:1, 8001:2, 9001:3} df = pd.DataFrame({"A": [7001, 8001, 9001, 10000]}) df["B"] = df["A"].map(lambda x: equiv[x]) print(df)
輸出:
A B 0 7001 1 1 8001 2 2 9001 3 3 10000 NaN
以上是如何將字典值對應到新的 Pandas 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!