我的数据框看起来像

  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


我想为每个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。如何获得所需的格式。

最佳答案

只需将c3的值更改为填充的结果即可:

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

关于python - 分组并返回所有列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54351674/

10-12 22:02