ho alcuni dati da un esperimento, e all'interno di ogni prova ci sono alcuni valori singoli, circondata da NA
's, che voglio compilare per l'intero processo:panda: riempimento valori mancanti all'interno di un gruppo
df = pd.DataFrame({'trial': [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3],
'cs_name': [np.nan, 'A1', np.nan, np.nan, np.nan, np.nan, 'B2',
np.nan, 'A1', np.nan, np.nan, np.nan]})
Out[177]:
cs_name trial
0 NaN 1
1 A1 1
2 NaN 1
3 NaN 1
4 NaN 2
5 NaN 2
6 B2 2
7 NaN 2
8 A1 3
9 NaN 3
10 NaN 3
11 NaN 3
Sono in grado di inserire questi valori nell'intero processo utilizzando sia bfill()
sia ffill()
, ma mi chiedo se esiste un modo migliore per raggiungere questo obiettivo.
df['cs_name'] = df.groupby('trial')['cs_name'].ffill()
df['cs_name'] = df.groupby('trial')['cs_name'].bfill()
uscita prevista:
cs_name trial
0 A1 1
1 A1 1
2 A1 1
3 A1 1
4 B2 2
5 B2 2
6 B2 2
7 B2 2
8 A1 3
9 A1 3
10 A1 3
11 A1 3