Petr
Petr

Reputation: 1817

Lambdas function on multiple columns

I am trying to extract only number from multiple columns in my pandas data.frame.

I am able to do so one-by-one columns however I would like to perform this operation simultaneously to multiple columns

My reproduced example:

import pandas as pd
import re
import numpy as np
import seaborn as sns

df = sns.load_dataset('diamonds')


# Create columns one again

df['clarity2'] = df['clarity']
df.head()

df[['clarity', 'clarity2']].apply(lambda x: x.str.extract(r'(\d+)'))

Upvotes: 1

Views: 61

Answers (1)

Paul Brennan
Paul Brennan

Reputation: 2696

If you want a tuple

cols = ['clarity', 'clarity2']
tuple(df[col].str.extract(r'(\d+)') for col in cols)

If you want a list

cols = ['clarity', 'clarity2']
[df[col].str.extract(r'(\d+)') for col in cols]

adding them to the original data

df['digit1'], df['digit2'] = [df[col].str.extract(r'(\d+)') for col in cols]

Upvotes: 1

Related Questions