如何在不删除分组变量的情况下将.bfill()与pandas groupby一起使用



我想使用bfill和groupby,但还没有找到一种不删除分组变量的方法。我知道我可以把ID列连接起来,但必须有另一种方法。

import pandas as pd
import numpy as np

test = pd.DataFrame({'ID': ['A', 'A', 'A', 'B', 'B', 'B'],
'dd': [0, 0, 0, 0, 0, 0],
'nu': np.array([0, 1, np.NaN, np.NaN, 10, 20])})

In [11]:test.groupby('ID').bfill()
Out[11]: 
nu
0   0.0
1   1.0
2   NaN
3  10.0
4  10.0
5  20.0

所需输出

ID  dd    nu
0  A   0   0.0
1  A   0   1.0
2  A   0   NaN
3  B   0  10.0
4  B   0  10.0
5  B   0  20.0

尝试df.assign:

>>> test.assign(nu=test.groupby('ID').bfill()['nu'])
ID  dd    nu
0  A   0   0.0
1  A   0   1.0
2  A   0   NaN
3  B   0  10.0
4  B   0  10.0
5  B   0  20.0

df.groupby.apply

>>> test.groupby('ID').apply(lambda x:x.bfill())
ID  dd    nu
0  A   0   0.0
1  A   0   1.0
2  A   0   NaN
3  B   0  10.0
4  B   0  10.0
5  B   0  20.0

最新更新