按数据帧分组以从每个组成员中获取非null元素



我有一个数据帧,在某些情况下,一个案例的记录在多行中,有些行中为null,如下所示:

date_rounded          1  2        3     4     5
0   2020-04-01 00:05:00 0.0  NaN     NaN    NaN   NaN   
1   2020-04-01 00:05:00 NaN  1.0     44.0   44.0  46.454    
2   2020-04-01 00:05:00 NaN  NaN     NaN    NaN   NaN   

我只想有一行填充的数据,到目前为止我有:

df.groupby(['date_rounded']).apply(lambda df0: df0.fillna(method='ffill').fillna(method='bfill').drop_duplicates())    

这是有效的,但它很慢,有更好的想法吗?

感谢

您也可以使用groupbyfirst:

df.groupby("date_rounded").first()
1    2     3     4       5
date_rounded                                     
2020-04-01 00:05:00  0.0  1.0  44.0  44.0  46.454

如果需要在每组中填写,可以使用groupby().applybfill:

df.groupby('date_rounded', as_index=False).apply(lambda x: x.bfill().iloc[0])

输出:

0         date_rounded    1    2     3     4       5
0  2020-04-01 00:05:00  0.0  1.0  44.0  44.0  46.454

最新更新