so guys, i have the following dataframe:dataframe
trough this line of code
df[df['cities'] == '']
i'm able to select the rows of the 'cities' column that are empty like this:filtered dataframe with only empty 'cities' rows
and i want to update all of this empty fields with a list of values, for example:
empty_cities_list = ['Des moines', 'Seattle', 'Des moines', ...]
in the order of the list, like this:
df.iloc[729]['cities'] = empty_cities_list[0]
df.iloc[740]['cities'] = empty_cities_list[1]
df[729] and df[740] are just examples of rows in the original df that have empty values for cities. how can i do this? i've tried looping through df and empty_cities_list using zip but it didnt work. Just making the question simpler, how can i update specific rows of a dataframe passing a list of values to be used?
CodePudding user response:
You can try following if the length of empty_cities_list matches the '' num in cities column
df.loc[df['cities'] == '', 'cities'] = empty_cities_list
CodePudding user response:
Try this:
import numpy as np
df['col1'] = df['col1'].replace('', np.nan)
df['cities']= df['cities'].fillna(pd.Series(empty_cities_list, index=df[df['cities'].isnull()].index))
Explanation:
First, convert all your '' to NaN then replace the NaN values with empty_cities_list by using fillna(). df[df['cities'].isnull()].index this gets the indices of all columns which needs to be replaced.
