Python 获取groupby和聚合后的最后一个非NaN值

Python 获取groupby和聚合后的最后一个非NaN值,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,我有一个这样的数据框,例如: col1 col2 0 A 3 1 B 4 2 A NaN 3 B 5 4 A 5 5 A NaN 6 B NaN . . . 47 B 8 48 A

我有一个这样的数据框,例如:

       col1         col2
0       A            3
1       B            4
2       A            NaN
3       B            5  
4       A            5
5       A            NaN
6       B            NaN
.
.
.
47      B            8
48      A            9
49      B            NaN         
50      A            NaN
当我尝试
df.groupby(['col1',sort=False).agg({'col2':'last'}).reset_index()
时,它会给出以下输出

      col1      col2
0     A          NaN
1     B          NaN
我想得到groupby和agg之后的最后一个非NaN值。理想的输出如下所示

      col1      col2
0     A          9
1     B          8

对于我来说,如果
NaN
缺少值,那么您的解决方案运行良好

以下是备选方案:

df = df.dropna(subset=['col2']).drop_duplicates('col1', keep='last')
如果NaN是字符串,请首先将其转换为缺少的值:

df['col2'] = df['col2'].replace('NaN', np.nan)
df.groupby(['col1'], sort=False).agg({'col2':'last'}).reset_index()