I have a very large dataframe and want to add a column which consists of the last four non-Nan values of another column. Dropping the Nan rows is not an option.
I thought of something using
df.apply(pd.Series.last_valid_index)
and combining it with an uprolling window, but maybe someone has a better take.
Below the desired output: (Consider the ... row as Nan)
Date Name Val Sum
11.1 A Nan Nan
11.1 B Nan Nan
11.1 C Nan Nan
12.1 A 1 Nan
12.1 B 2 Nan
12.1 C 4 Nan
13.1 A Nan Nan
13.1 B Nan Nan
13.1 C Nan Nan
... ... ... ...
12.2 A 2 Nan
12.2 B 2 Nan
12.2 C 3 Nan
13.2 A Nan Nan
13.2 B Nan Nan
13.2 C Nan Nan
14.2 A 4 Nan
14.2 B 2 Nan
14.2 C 4 Nan
15.2 A Nan Nan
15.2 B Nan Nan
15.2 C Nan Nan
16.2 A 7 14
16.2 B 2 8
16.2 C 4 15
17.2 A Nan 14
17.2 B Nan 8
17.2 C Nan 15
18.2 A Nan 14
18.2 B Nan 8
18.2 C Nan 15
Thank you
It looks like you can just drop Nan's and rolling on groupby:
Output: