<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def res_from_obseravtion_data(observation_data):
 """create a generic residual dataframe filled with np.NaN for missing information Parameters observation_data : pandas.DataFrame pyemu.Pst.observation_data Returns ------- res_df : pandas.DataFrame """

    res_df = observation_data.copy()
    res_df.loc[:, "name"] = res_df.pop("obsnme")
    res_df.loc[:, "measured"] = res_df.pop("obsval")
    res_df.loc[:, "group"] = res_df.pop("obgnme")
    res_df.loc[:, "modelled"] = np.NaN
    res_df.loc[:, "residual"] = np.NaN
    return res_df