Pandas: Copy a value of a row and paste it to multiple rows above in another column

Issue

I need to copy the strings of event and paste them into three rows above and five rows down of a new column named epoch.

      event    epoch
        NaN      NaN
        NaN      NaN
        NaN      NaN
        NaN      2_1
        NaN      2_1
        NaN      2_1
        2_1      2_1
        NaN      2_1
        NaN      2_1
        NaN      2_1
        NaN      2_1
        NaN      2_1
        NaN      NaN
        NaN      NaN
        NaN      NaN
        NaN      NaN
        NaN      NaN
        NaN      3_1
        NaN      3_1
        NaN      3_1
        3_1      3_1
        NaN      3_1
        NaN      3_1
        NaN      3_1
        NaN      3_1
        NaN      3_1
        NaN      NaN
        NaN      NaN
        NaN      NaN
        NaN      NaN

Thank you.

Solution

Try this: (considering column "epoch" doesn’t exist yet)

df['epoch'] = df.event.ffill(limit=5)
df['epoch'] = df['epoch'].bfill(limit=3)

df

Output:

index event epoch
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN 2_1
4 NaN 2_1
5 NaN 2_1
6 2_1 2_1
7 NaN 2_1
8 NaN 2_1
9 NaN 2_1
10 NaN 2_1
11 NaN 2_1
12 NaN NaN
13 NaN NaN
14 NaN NaN
15 NaN NaN
16 NaN NaN
17 NaN 3_1
18 NaN 3_1
19 NaN 3_1
20 3_1 3_1
21 NaN 3_1
22 NaN 3_1
23 NaN 3_1
24 NaN 3_1
25 NaN 3_1
26 NaN NaN
27 NaN NaN
28 NaN NaN
29 NaN NaN

Answered By – Drakax

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published