Home > database >  Filling Empty Rows with Dictionary Values via For Loop Pandas
Filling Empty Rows with Dictionary Values via For Loop Pandas

Time:02-21

I have a dictionary that looks like this:

my_dict = {2078:'T20',2153:'T20',2223:'T21',2219:'T21'}

My data frame:

 Date        Code   Fleet   KM
  2021-20-03  2078   T20     20
  2021-21-03  2078   NaN     22
  2021-21-03  2153   T20     23
  2021-21-03  2153   NaN     23
  2021-22-03  2223   NaN     28
  2021-22-03  2223   NaN     30
  2021-22-03  2219   T21     23
  2021-23-03  2219   NaN     23

I want to use the values of the dictionary to fill the empty rows in the Fleet column in my df.

So I wrote the code:

for index, row in df.iterrows():
    if (pd.isnull(row['Fleet'])):
    row['Fleet']= my_dict.row['Fleet']

However, when I check df.info() I can see that the code did not apply even though it runs. Could someone tell me what I am doing wrong?

CodePudding user response:

Use Series.map by dictionary and raplace missing values by Series.fillna:

df['Fleet'] = df['Fleet'].fillna(df['Code'].map(my_dict))

Or Series.combine_first:

df['Fleet'] = df['Fleet'].combine_first(df['Code'].map(my_dict))
  • Related