Below is my data frame.
df = pd.DataFrame({'vin':['aaa','aaa','aaa','bbb','bbb','bbb','ddd','eee','eee','fff'],
'c1':[35,'NA','NA','NA',4,'NA','NA','NA',56,406],
'c2':[35,'NA','NA','NA',43,'NA','NA','NA',67,77],
'c3':[36,'NA','NA','NA',104,'NA','NA','NA',44,306]})
I want to drag integer values of 'c1' 'c2', and 'c3' with respect to column 'vin'.
Below is the expected output:-
df = pd.DataFrame({'vin':['aaa','aaa','aaa','bbb','bbb','bbb','ddd','eee','eee','fff'],
'c1':[35,35,35,4,4,4,'NA',56,56,406],
'c2':[35,35,35,43,43,43,'NA',67,67,77],
'c3':[36,36,36,104,104,104,'NA',44,44,306]})
Note: The value of 'vin' column 'ddd' will remain as 'NA' as there is no integer value is available for 'ddd'.
I tried ffill() or groupbyffill() but I don't get the expected output. Below are lines of code, I tried.
#(1)
df['c1'] = df.groupby(['vin'])['c1'].ffill()
#(2)
df[["c1","c2" "c3"]] = df[["c1", "c2","c3"]].fillna(df.groupby(['vin'])[["c1", "c2","c3"]].ffill())
#(3)
df["c1"] = df.groupby('vin')['c1'].transform(lambda x: x.ffill())