簡體   English   中英

使用字典在pandas列中填充NaN

[英]Fill NaNs in pandas columns using dictionary

有沒有辦法使用不包含所有列的字典映射列值。 例如:

假設我的數據框是:

 A    B    C    D    E    F
nan  nan  nan  nan  nan  nan

我有一本字典,我想用作映射器:

d = {'A': 1, 'B': 1, 'E': 1}

所以輸出應該用0替換那些不在字典中的值

A    B    C    D    E    F
1    1    0    0    1    0

最慣用的選擇是兩個fillna調用,

df.fillna(d).fillna(0, downcast='infer')
df

   A  B  C  D  E  F
0  1  1  0  0  1  0

piRSquared建議assign作為第一個fillna調用的替代方案,

df.assign(**d).fillna(0, downcast='infer')
df

   A  B  C  D  E  F
0  1  1  0  0  1  0

另一種選擇是在列上使用Index.isin 這是單行形式:

df[:] = [df.columns.isin(d.keys()).astype(int)]

要概括為N行,我們使用repeat

df[:] = df.columns.isin(d.keys()).astype(int)[None,:].repeat(len(df), axis=0)
df

   A  B  C  D  E  F
0  1  1  0  0  1  0

為了好玩,您還可以使用reindex

pd.DataFrame(d, index=df.index).reindex(df.columns, axis=1, fill_value=0)

   A  B  C  D  E  F
0  1  1  0  0  1  0

暫無
暫無

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

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