2016-02-11 2 views
0

У меня есть кадр данных, как это:Панды Заполните столбец с Словаре

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 

и у меня есть словарь, как это:

dc = {'C': 5, 'D' : 10} 

Я хочу, чтобы заполнить 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 

Я знаю, как подмножать DataFrame, но я не могу найти способ заполнить значения словарем; есть идеи?

ответ

4

Вы можете использовать fillna с loc и передать ваши 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 

Чтобы сделать это для вас dataframe вам нужно нарезать с той же маской и присвоить результат выше к нему:

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