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()