I have a pandas dataframe
     A  B  C
0  NaN  2  6
1  3.0  4  0
2  NaN  0  4
3  NaN  1  2
where I have a column A that has NaN values in some rows (not necessarily consecutive).
I want to replace these values not with a constant value (which pd.fillna does), but rather with the values from a numpy array. 
So the desired outcome is:
     A  B  C
0  1.0  2  6
1  3.0  4  0
2  5.0  0  4
3  7.0  1  2
I'm not sure the .replace method will help here as well, since that seems to replace value <-> value via dictionary. Whereas here I want to sequentially change NaN to its corresponding value (by index) in the np array.
I tried:
MWE:
huh = pd.DataFrame([[np.nan, 2, 6],
                    [3, 4, 0],
                    [np.nan, 0, 4],
                    [np.nan, 1, 2]],
                   columns=list('ABC'))
huh.A[huh.A.isnull()] = np.array([1,5,7])  # what i want to do, but this gives error
gives the error
SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy '''
I read the docs but I can't understand how to do this with .loc.
How do I do this properly, preferably without a for loop?
Other info:
- The number of elements in the np array will always match the number of NaN in the dataframe, so your answer does not need to check for this.
 
    