首页 > 解决方案 > 分组并返回所有列

问题描述

我的数据框看起来像

  c1   c2   c3
  1     2    A 
  1     3    B 
  1     5    NA 
  1     7    D
  2     0    E
  2     1    NA
  2     2    B 
  2     4    A 
  2     6    B

我想用 bfill 为每个 id 填充最后一列。

   c1   c2   c3
  1     2    A 
  1     3    B 
  1     5    D
  1     7    D
  2     0    E
  2     1    B
  2     2    B 
  2     4    A 
  2     6    B

我试过了

  df.groupby(['c1']).apply(lambda x:       
  x['c3'].fillna(method='bfill')).reset_index()

但它缺少 c2 列。如何获得所需的格式。

标签: pythonpython-3.xpandasdataframe

解决方案


只需将 c3 的值更改为 bfill 的结果:

df['c3'] = df.groupby(['c1'])['c3'].bfill()

输出:

   c1  c2 c3
0   1   2  A
1   1   3  B
2   1   5  D
3   1   7  D
4   2   0  E
5   2   1  B
6   2   2  B
7   2   4  A
8   2   6  B

推荐阅读