Python Dataframe获取每行最后一个非空列的值

Python Dataframe获取每行最后一个非空列的值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧,如下所示: ID 2016 2017 2018 2019 2020 0 1 1.64 NaN NaN NaN NaN 1 2 NaN NaN NaN 0.78 NaN 2 3 1.11 0.97 1.73 1.23 0.87 3 4 0.84 0.74 1.64 1.47 0.41 4 5 0.75

我有一个数据帧,如下所示:

    ID  2016    2017    2018    2019    2020
0   1   1.64    NaN     NaN     NaN     NaN
1   2   NaN     NaN     NaN     0.78    NaN
2   3   1.11    0.97    1.73    1.23    0.87
3   4   0.84    0.74    1.64    1.47    0.41
4   5   0.75    1.05    NaN     NaN     NaN
我希望从最后一个非空列中获取值,以便:

    ID  2016    2017    2018    2019    2020    LastValue
0   1   1.64    NaN     NaN     NaN     NaN     1.64
1   2   NaN     NaN     NaN     0.78    NaN     0.78
2   3   1.11    0.97    1.73    1.23    0.87    0.87
3   4   0.84    0.74    1.64    1.47    0.41    0.41
4   5   0.75    1.05    NaN     NaN     NaN     1.05
我试图按如下相反的顺序遍历年份列,但未能完全实现我的目标

for i in reversed(df.columns[1:]):
     if df[i] is not None:
          val = df[i]

你能帮我解决这个问题吗?谢谢。

想法是选择所有列,不使用“第一个”选项,然后按缺少值的行向前填充,最后选择“最后一列”:

df['LastValue'] = df.iloc[:, 1:].ffill(axis=1).iloc[:, -1]
print (df)
   ID  2016  2017  2018  2019  2020  LastValue
0   1  1.64   NaN   NaN   NaN   NaN       1.64
1   2   NaN   NaN   NaN  0.78   NaN       0.78
2   3  1.11  0.97  1.73  1.23  0.87       0.87
3   4  0.84  0.74  1.64  1.47  0.41       0.41
4   5  0.75  1.05   NaN   NaN   NaN       1.05
详细信息

print (df.iloc[:, 1:].ffill(axis=1))
   2016  2017  2018  2019  2020
0  1.64  1.64  1.64  1.64  1.64
1   NaN   NaN   NaN  0.78  0.78
2  1.11  0.97  1.73  1.23  0.87
3  0.84  0.74  1.64  1.47  0.41
4  0.75  1.05  1.05  1.05  1.05