2017-02-12 18 views
2

Я думаю, что это тривиальный вопрос, но я просто не могу заставить его работать.Как заменить подмножество данных с пандами на другие серии

d = { 'one': pd.Series([1,2,3,4], index=['a', 'b', 'c', 'd']), 
      'two': pd.Series([np.nan,6,np.nan,8], index=['a', 'b', 'c', 'd']), 
      'three': pd.Series([10,20,30,np.nan], index = ['a', 'b', 'c', 'd'])}   
    ​  
df = pd.DataFrame(d) 
df 

    one  three two 
a 1  10.0 NaN 
b 2  20.0 6.0 
c 3  30.0 NaN 
d 4  NaN  8.0 

Мои serires:

​fill = pd.Series([30,60]) 

Я хотел бы заменить определенный столбец, пусть это будет 'два'. С моей серией называется fill, где столбец «два» встречает условие: это Nan. Canyou помочь мне с этим? Мой желаемый результат:

df 

    one  three two 
a 1  10.0 30 
b 2  20.0 6.0 
c 3  30.0 60 
d 4  NaN  8.0 

ответ

5

Я думаю, что вам нужно loc с isnull для замены numpy array, созданный из fill по Series.values:

df.loc[df.two.isnull(), 'two'] = fill.values 
print (df) 
    one three two 
a 1 10.0 30.0 
b 2 20.0 6.0 
c 3 30.0 60.0 
d 4 NaN 8.0