如何在python中填充基于另一列的列?



我有一个像这样的df:

ID       Test Done      Test Action    Test Date
1234     Happy Test     Decline        2021-11-30
1234     None           Decline        None
1235     Sad Test       Decline        2022-03-24
1235     None           Decline        2022-03-04
1235     None           Decline        2022-03-04
1236     Lonely Test    Decline        2022-05-06
1236     Lonely Test    Decline        2022-05-06
1236     Lonely Test    Decline        2022-05-06

我试图填充与ID号相关的Test Done中的所有None或空字段。所以我想让df看起来像....

ID       Test Done      Test Action    Test Date
1234     Happy Test     Decline        2021-11-30
1234     Happy Test     Decline        None
1235     Sad Test       Decline        2022-03-24
1235     Sad Test       Decline        2022-03-04
1235     Sad Test       Decline        2022-03-04
1236     Lonely Test    Decline        2022-05-06
1236     Lonely Test    Decline        2022-05-06
1236     Lonely Test    Decline        2022-05-06

我不知道该怎么做。从我在网上搜索,我没有找到任何与这个特定问题相关的东西,也没有找到任何可以回答我的问题的函数。

编辑:

我只想用Test Done中显示的第一个值填充None值。例如,在示例中,第一个值是ID为1234的Happy Test,我希望None值为Happy Test, ID为1235的Sad Test也是如此。如果一个ID已经填充了Test Done,那么我们可以跳过它。希望这对你有意义。

ffill()使用组by

data = {'id': [1234, 1234, 1235, 1235, 1235, 1236, 1236, 1236],
'test': ['Happy Test', 
None, 
'Sad Test', 
None, 
None, 
'Lonely Test', 
'Lonely Test', 
'Lonely Test']
}
df = pd.DataFrame(data)
df['test'] = df.groupby('id')['test'].ffill()

输出:

id         test
0  1234   Happy Test
1  1234   Happy Test
2  1235     Sad Test
3  1235     Sad Test
4  1235     Sad Test
5  1236  Lonely Test
6  1236  Lonely Test
7  1236  Lonely Test

最新更新