I have a pandas dataframe of scores:
data_1 = {"Grad_22": [96, np.nan, np.nan], "Grad_23": [92, 97, np.nan], "Grad_24": [np.nan, 93, 95]}df_1= pd.DataFrame(data_1)df_1["DATE"] = pd.to_datetime(["2022-12-31","2023-12-31","2024-12-31"])df_1.set_index("DATE", inplace=True) Grad_22 Grad_23 Grad_24DATE 2022-12-31 96.0 92.0 NaN2023-12-31 NaN 97.0 93.02024-12-31 NaN NaN 95.0
I also have a dataframe of grads by years:
data_2 = {"Sr": ["Grad_22","Grad_23"],"Jr": ["Grad_23","Grad_24"]}df_2 = pd.DataFrame(data_2)df_2["DATE"] = pd.to_datetime(["2022-12-31","2023-12-31"])df_2.set_index("DATE", inplace=True) Sr JrDATE 2022-12-31 Grad_22 Grad_232023-12-31 Grad_23 Grad_24
I would like to use the rows from df_2 as labels for df_1 to populate df_3
data_3= {"Sr": [0, 0], "Jr": [0, 0]}df_3 = pd.DataFrame(data_3)df_3 ["DATE"] = pd.to_datetime(["2022-12-31","2023-12-31"])df_3.set_index("DATE", inplace=True)print(df_3)'''Iterrows seems perfect for this:'''for index, row in df_2.iterrows(): df_3.loc[index] = df_1.loc[index, row] print(df_3)
I would expect:
Sr JrDATE 2022-12-31 96.0 92.02023-12-31 97.0 93.0
Instead, i get:
Sr JrDATE 2022-12-31 NaN NaN2023-12-31 NaN NaN
How should I be assigning to df_3 and why am I getting NaN?