熊猫用字典填充列

Isa*_*ley 0 python dictionary dataframe pandas

我有一个这样的数据框:

   A    B    C    D    
0  1    0   nan  nan  
1  8    0   nan  nan  
2  8    1   nan  nan  
3  2    1   nan  nan  
4  0    0   nan  nan  
5  1    1   nan  nan  
Run Code Online (Sandbox Code Playgroud)

我有一本这样的字典:

dc = {'C': 5, 'D' : 10}
Run Code Online (Sandbox Code Playgroud)

我想nan用字典填充数据框中的值,但仅对于 B 列值为 0 的单元格,我想获得:

   A    B    C    D    
0  1    0    5    10
1  8    0    5    10
2  8    1   nan  nan  
3  2    1   nan  nan  
4  0    0    5    10
5  1    1   nan  nan 
Run Code Online (Sandbox Code Playgroud)

我知道如何对数据框进行子集化,但找不到用字典填充值的方法;有任何想法吗?

Ant*_*pov 5

您可以使用fillnawithloc并将您的 dict 传递给它:

In [13]: df.loc[df.B==0,:].fillna(dc)
Out[13]:
   A  B  C   D
0  1  0  5  10
1  8  0  5  10
4  0  0  5  10
Run Code Online (Sandbox Code Playgroud)

要为您的数据帧执行此操作,您需要使用相同的掩码切片并将上面的结果分配给它:

df.loc[df.B==0, :] = df.loc[df.B==0,:].fillna(dc)

In [15]: df
Out[15]:
   A  B   C   D
0  1  0   5  10
1  8  0   5  10
2  8  1 NaN NaN
3  2  1 NaN NaN
4  0  0   5  10
5  1  1 NaN NaN
Run Code Online (Sandbox Code Playgroud)