mam pewne dane z eksperymentu, w ciągu każdej próby istnieją pewne pojedyncze wartości, otoczone NA
„s, że chcę wypełnić do całego procesu:pandy: Wypełnienie brakujących wartości w grupie
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
Jestem w stanie wypełnić te wartości w ciągu całego okresu próbnego, używając zarówno bfill()
, jak i ffill()
, ale zastanawiam się, czy istnieje lepszy sposób osiągnięcia tego.
df['cs_name'] = df.groupby('trial')['cs_name'].ffill()
df['cs_name'] = df.groupby('trial')['cs_name'].bfill()
oczekiwany wynik:
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