Заполните данные pandas отсутствующим значением, сгруппированным по ключу
Я имею дело с pandas DataFrames следующим образом:
id x
0 1 10
1 1 20
2 2 100
3 2 200
4 1 NaN
5 2 NaN
6 1 300
7 1 NaN
Я хотел бы заменить каждый NAN 'x' предыдущим не-NAN 'x' из строки с тем же значением "id":
id x
0 1 10
1 1 20
2 2 100
3 2 200
4 1 20
5 2 200
6 1 300
7 1 300
Есть ли какой-нибудь пятнистый способ сделать это без ручного перебора строк?
Ответы
Ответ 1
Вы можете выполнить операцию groupby/forward-fill в каждой группе:
import numpy as np
import pandas as pd
df = pd.DataFrame({'id': [1,1,2,2,1,2,1,1], 'x':[10,20,100,200,np.nan,np.nan,300,np.nan]})
df['x'] = df.groupby(['id'])['x'].ffill()
print(df)
дает
id x
0 1 10.0
1 1 20.0
2 2 100.0
3 2 200.0
4 1 20.0
5 2 200.0
6 1 300.0
7 1 300.0