How to set a cell to NaN in a pandas dataframe

I'd like to replace bad values in a column of a dataframe by NaN's.

    mydata = {'x' : [10, 50, 18, 32, 47, 20], 'y' : ['12', '11', 'N/A', '13', '15', 'N/A']}
    df = pd.DataFrame(mydata)

    df[df.y == 'N/A']['y'] = np.nan

Though, the last line fails and throws a warning because it's working on a copy of df. So, what's the correct way to handle this? I've seen many solutions with iloc or ix but here, I need to use a boolean condition.

just use replace:

    In [106]:
    df.replace('N/A',np.NaN)

    Out[106]:
        x    y
    0  10   12
    1  50   11
    2  18  NaN
    3  32   13
    4  47   15
    5  20  NaN

What you're trying is called chain indexing: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

You can use loc to ensure you operate on the original dF:

    In [108]:
    df.loc[df['y'] == 'N/A','y'] = np.nan
    df

    Out[108]:
        x    y
    0  10   12
    1  50   11
    2  18  NaN
    3  32   13
    4  47   15
    5  20  NaN

From: stackoverflow.com/q/34794067