Home > Back-end >  Fill the missing value using comparing other column in python
Fill the missing value using comparing other column in python

Time:08-03

Need to fill the missing value.

Product Another
A 3
B 4
A Nan
B Nan
B 4
A 3
B Nan
B Nan
c 5
C 5

Output needs as below:

Product Another
A 3
B 4
A 3
B 4
B 4
A 3
B 4
B 4
c 5
C 5

If the product is A, the value should be 3 and for B, it is 4. is it possible to add using fillna?

CodePudding user response:

You can search for records where "Product" is A and "Another" is missing. Same for "Product" B. By that you arrive at the following code naturally:

idx_missing = df["Another"] == np.nan
idx_missing_A = idx_missing & df["Product"] == 'A'
idx_missing_B = idx_missing & df["Product"] == 'B'

df.loc[idx_missing_A, "Another"] = 3
df.loc[idx_missing_B, "Another"] = 4

CodePudding user response:

Here 3,4 are just the first values for that letter-group, so you can access them with .groupby()...head()

But for more general cases you could use df['Product'].map({'A':3, 'B':4}) to get the series of replacement values, then fillna it with

df['Another'].fillna(df['Product'].map({'A':3, 'B':4}))
  • Related