Iteration over the rows of a Pandas DataFrame as dictionaries
Defining a separate function for this will be inefficient, as you are applying row-wise calculations. More efficient would be to calculate a new series, then iterate the series:
df = pd.DataFrame({'length':[1,2,3,'test'], 'width':[10, 20, 30,'hello']})
df2 = df.iloc[:].apply(pd.to_numeric, errors='coerce')
error_str = 'Error : length and width should be int or float'
print(*(df2['length'] * df2['width']).fillna(error_str), sep='\n')
10.0
40.0
90.0
Error : length and width should be int or float
You can try:
for k, row in df.iterrows():
myfunc(**row)
Here k
is the dataframe index and row
is a dict, so you can access any column with: row["my_column_name"]
one clean option is this one:
for row_dict in df.to_dict(orient="records"):
print(row_dict['column_name'])