I am working to try to group my data by a Department property and then once I have it grouped fill in the space above and below two fields that are filled in at the middle of the dataset (Rating and Number).
I have tried getting the groupby to work but to no avail. My plan is to get the groupby working then apply the following code to see if I can get the fill to work correctly.
# This won't work on its own because I need to group the data first.
df = df.mask(df == 0).ffill()
This is what I am starting with:
| Department | Range | Rating | Number | |--------------|----------|--------------|--------| | Admin | 0 (None) | | | | Admin | 01 to 3 | | | | Admin | 01 to 3 | | | | Admin | 01 to 3 | | | | Admin | 04 to 6 | 2. On Target | 2 | | Admin | 04 to 6 | 2. On Target | 2 | | Admin | 04 to 6 | 2. On Target | 2 | | Admin | 07 to 10 | | | | Admin | 07 to 10 | | | | Admin | 07 to 10 | | | | Admin | 07 to 10 | | | | Distribution | 0 (None) | | | | Distribution | 01 to 3 | | | | Distribution | 01 to 3 | | | | Distribution | 01 to 3 | | | | Distribution | 04 to 6 | 2. On Target | 2 | | Distribution | 04 to 6 | 2. On Target | 2 | | Distribution | 04 to 6 | 2. On Target | 2 | | Distribution | 07 to 10 | | | | Distribution | 07 to 10 | | | | Distribution | 07 to 10 | | | | Distribution | 07 to 10 | | |
This is what I want
| Department | Range | Rating | Number | |--------------|----------|--------------|--------| | Admin | 0 (None) | 1. Too Low | 1 | | Admin | 01 to 3 | 1. Too Low | 1 | | Admin | 01 to 3 | 1. Too Low | 1 | | Admin | 01 to 3 | 1. Too Low | 1 | | Admin | 04 to 6 | 2. On Target | 2 | | Admin | 04 to 6 | 2. On Target | 2 | | Admin | 04 to 6 | 2. On Target | 2 | | Admin | 07 to 10 | 3. Too High | 3 | | Admin | 07 to 10 | 3. Too High | 3 | | Admin | 07 to 10 | 3. Too High | 3 | | Admin | 07 to 10 | 3. Too High | 3 | | Distribution | 0 (None) | 1. Too Low | 1 | | Distribution | 01 to 3 | 1. Too Low | 1 | | Distribution | 01 to 3 | 1. Too Low | 1 | | Distribution | 01 to 3 | 1. Too Low | 1 | | Distribution | 04 to 6 | 2. On Target | 2 | | Distribution | 04 to 6 | 2. On Target | 2 | | Distribution | 04 to 6 | 2. On Target | 2 | | Distribution | 07 to 10 | 3. Too High | 3 | | Distribution | 07 to 10 | 3. Too High | 3 | | Distribution | 07 to 10 | 3. Too High | 3 | | Distribution | 07 to 10 | 3. Too High | 3 |
Is there any dynamic way to do this?