我有一个像这样的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