Skip to content
Advertisement

loop over rows of csv and put inside code

I am trying to read 5 columns from a 6 column csv data and use each row in a formula and itarete for all the rows.

import pandas as pd
df = pd.read_csv("/home/user/trial/blabla.csv", names=["name", "loc1", "loc2", "loc3", "loc4", "trial", "safe"])

a = something(b=df["trial"])
b1 = anotherhing(df["loc1"], df["loc2"], a)
b2 = anotherhing(df["loc3"], df["loc4"], a)

the file is csv file is something like this with hunderds of rows

john 12.1 22.3 33.5 88.2 0.2 1
jack 25.3 11.8 93.1 08.1 0.01 1

when I put values by hand it works all in well. However, when I put the df columns to do it for each row. It does not work. It reads all columns at once instead of 1 by 1.

What am I doing wrong here?

Advertisement

Answer

I am not sure if I got your question right, but doing:

df['loc1'] returns the entire column as a pandas series, so you will not get individual values for the columns.

It is hard to give a good suggestion since I dont really know what your something(...) function does, but if requiring individual values is what you want, you can do something like:

something_values = []

for row in df.itertuples(): 
  something_values.append(something(row[your_column_name]))

Either way, it might be worth looking into the dataframe method .apply() that is optimised for such operations, or column wise calculations (e.g. df['colA'] * df['colb']).

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement