Groupby 数据框从每个组成员中获取非空元素

Groupby dataframe to get not null elements from each group member

我有一个数据框,在某些情况下,一个案例的记录不止一行,有些行中有空值:

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

这个可行,但是速度很慢,有什么更好的主意吗?

谢谢

如果需要在每个组内填写,可以使用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

您还可以使用 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