Your question is missing the important point what g is, especially that it has dtype categorical. I assume it is something like this:
g = pd.Series(["A", "B", "C", np.nan], dtype="category")
The problem you are experiencing is that fillna requires a value that already exists as a category. For instance, g.fillna("A") would work, but g.fillna("D") fails. To fill the series with a new value you can do:
g_without_nan = g.cat.add_categories("D").fillna("D")