简体   繁体   中英

Pandas copy value from row above

Got a panda's dataframe with below structure:

Index    Name  Value  Other
1          NaN  10      5
2           A   20      2
3               30      3
4               100     12
5          NaN  40      10
6           C   10      1
7               40      10
8               40      10
9               40      10
10         NaN  40      10
11          D   10      1
12         NaN  40      10

...

I need to copy a value from column Name in rows that have it to rows that are below it until it finds NaN or other value? So how do i approach a copying a name A to row 3,4? then C [row 6] copying to row 7,8,9... until NaN/SomeName?

so after running the code it should get a dataframe like it:

Index    Name  Value  Other
1          NaN  10      5
2           A   20      2
3           A   30      3
4           A   100     12
5          NaN  40      10
6           C   10      1
7           C   40      10
8           C   40      10
9           C   40      10
10         NaN  40      10
11          D   10      1
12         NaN  40      10

Just use replace() :

df=df.replace('nan',float('NaN'),regex=True)
#for converting string 'nan' to Actual NaN
df['Name']=df['Name'].replace('',method='ffill')
#for forward filling '' values

output:

Index    Name  Value  Other
1          NaN  10      5
2           A   20      2
3           A   30      3
4           A   100     12
5          NaN  40      10
6           C   10      1
7           C   40      10
8           C   40      10
9           C   40      10
10         NaN  40      10
11          D   10      1
12         NaN  40      10

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM