Y4RD13
Y4RD13

Reputation: 984

How to iterate over rows using apply to a dataframe?

I would like to iterate over rows using the apply method. The first row "1" is a string with sentence, the rest of the rows are floats. I will take this rows to use it into a function. Something like this:

def my_function(row1, row2, row3, row4):
  if row["1"]:
    '''do some stuff here with the rows'''
  return # the dataframe with the modification to the float rows "2" "3" "4" 

df['row1'] = df['row1'].apply(lambda row: my_function(row['row1'], row['row2'], row['row3'], row['row4']))

TypeError: string indices must be integers

An example: the first row is a sentence and if has any "a" in the sentence, then we proceed to modify the float rows, and the function will return the modification of this three last rows.

Upvotes: 1

Views: 97

Answers (1)

Alonso Ogueda Oliva
Alonso Ogueda Oliva

Reputation: 301

You need to declare the axis, for default apply applies a function along columns. On the other hand, you should decide if your function is going to use a row as argument or single elements, to be honest I prefer the first one. Your code could be something like this: You need this one:

def my_function(row):
  if row["a"] ... :
    # do something
  if row["b"] ... :
    # do something
  return something

df_negative['new_a'] = df_negative['a'].apply(my_function, axis=1)  # without lambda function

Upvotes: 3

Related Questions