Reputation: 984
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
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