Question Details

No question body available.

Tags

python pandas dataframe lambda apply

Answers (3)

Accepted Answer Available
Accepted Answer
November 29, 2025 Score: 1 Rep: 114 Quality: Medium Completeness: 40%

Use map:

df[['Age', 'Salary']] = df[['Age', 'Salary']].map(lambda x: x + 100 if x > 30 else 0)

It does exactly what your single-column apply does, but works for multiple columns in one line.

November 29, 2025 Score: 2 Rep: 16,907 Quality: Medium Completeness: 60%

Don't use a lambda. Don't use apply nor applymap. Use a simple boolean mask:

import numpy as np
import pandas as pd

rand = np.random.default_rng(seed=0) df = pd.DataFrame( columns=('Age', 'Salary', 'Other'), data=rand.uniform(low=10, high=50, size=(20, 3)), )

print(df) mask = df[['Age', 'Salary']] > 30 df[mask] += 100 df[~mask] = 0 print(df)
          Age     Salary      Other
0   35.478467  20.791469  11.638941
1   10.661105  42.530810  46.510223
2   34.265431  39.179862  31.745000
3   47.402897  42.634142  10.109540
4   44.296171  11.343423  39.186218
5   17.026225  44.527157  31.658449
6   21.988476  26.907489  11.132787
7   14.971331  36.824977  35.887580
8   34.615404  25.347102  49.888397
9   49.233414  37.421679  36.018371
10  37.537869  25.556857  15.403860
11  38.859534  31.014173  22.409675
12  29.433414  45.579513  47.361741
13  24.311808  32.861193  22.874776
14  33.772001  23.516449  25.664760
15  45.610974  19.086304  34.927486
16  13.360614  43.305766  41.483932
17  19.574778  45.059369  12.342721
18  23.444682  16.011179  28.013575
19  41.852971  19.225688  12.080852

Age Salary Other 0 135.478467 0.000000 11.638941 1 0.000000 142.530810 46.510223 2 134.265431 139.179862 31.745000 3 147.402897 142.634142 10.109540 4 144.296171 0.000000 39.186218 5 0.000000 144.527157 31.658449 6 0.000000 0.000000 11.132787 7 0.000000 136.824977 35.887580 8 134.615404 0.000000 49.888397 9 149.233414 137.421679 36.018371 10 137.537869 0.000000 15.403860 11 138.859534 131.014173 22.409675 12 0.000000 145.579513 47.361741 13 0.000000 132.861193 22.874776 14 133.772001 0.000000 25.664760 15 145.610974 0.000000 34.927486 16 0.000000 143.305766 41.483932 17 0.000000 145.059369 12.342721 18 0.000000 0.000000 28.013575 19 141.852971 0.000000 12.080852
November 29, 2025 Score: 1 Rep: 742 Quality: Low Completeness: 50%

If you iterate over a dataframe with apply, you should explicitly call your columns in lambda function and, in your case, define the desired axis, like this:

df.apply(lambda x : x["Salary"]+100 if x["Age"]>30 else 0, axis=1)

which will give you a Series of modified column or, better, use numpy's where method:

df["Salary"] = np.where(df["Age"]>30, df["Salary"]+100, 0)

which will result in desired dataframe.