Yana
Yana

Reputation: 975

How to apply multiple custom functions to the same column without using apply every time?

I have three functions:

def replace_date(x):
    pass

def replace_name(x):
    pass

def replace_occupation(x):
    pass 

They need to be applied to each row in a specific column. So far I write the code

df['mod'] = df['info'].apply(lambda row: replace_date(row)).apply(lambda row: replace_name(row)).apply(lambda row: replace_occupation(row)).apply(lambda row: re.sub(' +', ' ', row))

The last one I did not yet put into a separate function but I want to get rid of the three apply-s and write it in a nicer and more compact way.

Upvotes: 0

Views: 92

Answers (1)

7shoe
7shoe

Reputation: 1506

Try

df['mod'] = df['info'].apply(lambda row: re.sub(' +', ' ', replace_occupation(replace_name(replace_date(row))))) 

It's one apply() although slightly less readable due to the re.sub(' +', ' ', row) in the end.

More generally, it is

df['col'].apply(lambda row: h(f(g(row))))

for some functions f(), g(), and h().

Upvotes: 2

Related Questions