Bird
Raised Fist0
Pandasdata~5 mins

apply() on rows (axis=1) in Pandas - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the apply() function do when used with axis=1 in pandas?
It applies a function to each row of the DataFrame, allowing you to perform row-wise operations.
Click to reveal answer
beginner
How do you specify that apply() should work on rows instead of columns?
By setting the parameter axis=1 inside the apply() function.
Click to reveal answer
beginner
Example: What will this code do?
df.apply(lambda row: row['A'] + row['B'], axis=1)
It will add the values in columns 'A' and 'B' for each row and return a Series with these sums.
Click to reveal answer
intermediate
Why might you use apply() with axis=1 instead of vectorized operations?
To perform custom or complex operations that involve multiple columns in each row, which are not easily done with simple vectorized functions.
Click to reveal answer
beginner
What type of object does the function inside apply(axis=1) receive as input?
It receives a pandas Series representing a single row of the DataFrame.
Click to reveal answer
What does axis=1 mean when used with apply() in pandas?
AApply function only to the first row
BApply function to each column
CApply function to each row
DApply function to the entire DataFrame at once
What type of object is passed to the function inside apply(axis=1)?
AA Series representing a row
BA DataFrame
CA list
DA scalar value
Which of these is a correct way to sum columns 'A' and 'B' for each row using apply()?
Adf.apply(lambda x: x['A'] + x['B'], axis=1)
Bdf.apply(lambda x: x['A'] + x['B'], axis=0)
Cdf.apply(sum, axis=1)
Ddf.sum(axis=1)
Why might apply(axis=1) be slower than vectorized operations?
ABecause it does not support lambda functions
BBecause it processes columns instead of rows
CBecause it only works on small DataFrames
DBecause it uses loops internally
If you want to create a new column based on row-wise calculations, which method is suitable?
Adf['new'] = df.apply(func, axis=0)
Bdf['new'] = df.apply(func, axis=1)
Cdf['new'] = df.sum(axis=0)
Ddf['new'] = df.sum(axis=1)
Explain how apply() with axis=1 works in pandas and give a simple example.
Think about how you would add two columns for each row.
You got /4 concepts.
    Describe a situation where using apply() with axis=1 is better than vectorized operations.
    Consider when you need custom calculations per row.
    You got /3 concepts.

      Practice

      (1/5)
      1.

      What does apply() with axis=1 do in a pandas DataFrame?

      easy
      A. It applies a function to each column of the DataFrame.
      B. It applies a function to each row of the DataFrame.
      C. It applies a function to the entire DataFrame at once.
      D. It applies a function only to the first row.

      Solution

      1. Step 1: Understand the axis parameter

        In pandas, axis=1 means the function is applied across columns for each row.
      2. Step 2: Apply function on rows

        Using apply() with axis=1 runs the function on each row individually.
      3. Final Answer:

        It applies a function to each row of the DataFrame. -> Option B
      4. Quick Check:

        apply(axis=1) = row-wise function [OK]
      Hint: Remember axis=1 means row-wise operation [OK]
      Common Mistakes:
      • Confusing axis=1 with column-wise operation
      • Thinking apply(axis=1) applies to the whole DataFrame at once
      • Assuming it only applies to the first row
      2.

      Which of the following is the correct syntax to apply a function f to each row of a DataFrame df?

      def f(row):
          return row['A'] + row['B']
      easy
      A. df.apply(f, axis=1)
      B. df.apply(f, axis=0)
      C. df.apply(f)
      D. df.apply(f, axis='rows')

      Solution

      1. Step 1: Identify axis for row-wise apply

        Row-wise apply requires axis=1.
      2. Step 2: Check syntax correctness

        df.apply(f, axis=1) uses axis=1, which is correct. The other options use incorrect axis parameters.
      3. Final Answer:

        df.apply(f, axis=1) -> Option A
      4. Quick Check:

        Use axis=1 for rows [OK]
      Hint: Use axis=1 to apply function row-wise [OK]
      Common Mistakes:
      • Using axis=0 applies function column-wise
      • Omitting axis defaults to axis=0
      • Using incorrect axis string values
      3.

      What is the output of the following code?

      import pandas as pd
      df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
      def sum_row(row):
          return row['A'] + row['B']
      df['Sum'] = df.apply(sum_row, axis=1)
      print(df)
      medium
      A. Error: KeyError
      B. A B Sum 0 1 3 3 1 2 4 4
      C. A B Sum 0 1 3 1 1 2 4 2
      D. A B Sum 0 1 3 4 1 2 4 6

      Solution

      1. Step 1: Understand the function sum_row

        The function adds values from columns 'A' and 'B' for each row.
      2. Step 2: Apply function row-wise and add new column

        Applying with axis=1 sums each row's 'A' and 'B'. For row 0: 1+3=4, row 1: 2+4=6.
      3. Final Answer:

        A B Sum 0 1 3 4 1 2 4 6 -> Option D
      4. Quick Check:

        Row sums = 4, 6 [OK]
      Hint: Sum columns per row with apply(axis=1) [OK]
      Common Mistakes:
      • Using axis=0 sums columns, not rows
      • Forgetting to assign result back to DataFrame
      • Mixing up row and column indices
      4.

      Identify the error in the following code snippet:

      import pandas as pd
      df = pd.DataFrame({'X': [10, 20], 'Y': [30, 40]})
      def multiply(row):
          return row['x'] * row['Y']
      df['Product'] = df.apply(multiply, axis=1)
      print(df)
      medium
      A. KeyError because 'x' column does not exist (case sensitive).
      B. TypeError due to wrong axis parameter.
      C. No error, output is correct.
      D. SyntaxError in function definition.

      Solution

      1. Step 1: Check column names in DataFrame

        Columns are 'X' and 'Y' with uppercase letters.
      2. Step 2: Check function usage of column names

        Function uses 'x' (lowercase), which does not match 'X' (uppercase), causing KeyError.
      3. Final Answer:

        KeyError because 'x' column does not exist (case sensitive). -> Option A
      4. Quick Check:

        Column names are case sensitive [OK]
      Hint: Check exact column names and case sensitivity [OK]
      Common Mistakes:
      • Ignoring case sensitivity in column names
      • Using wrong axis parameter
      • Assuming no error without testing
      5.

      You have a DataFrame df with columns 'Name', 'Math', and 'English'. You want to create a new column 'Result' that shows 'Pass' if the average of 'Math' and 'English' is 50 or more, otherwise 'Fail'. Which code correctly uses apply() with axis=1 to do this?

      hard
      A. df['Result'] = df.apply(lambda row: 'Pass' if row['Math'] + row['English'] >= 50 else 'Fail', axis=1)
      B. df['Result'] = df.apply(lambda col: 'Pass' if (col['Math'] + col['English']) / 2 >= 50 else 'Fail', axis=0)
      C. df['Result'] = df.apply(lambda row: 'Pass' if (row['Math'] + row['English']) / 2 >= 50 else 'Fail', axis=1)
      D. df['Result'] = df.apply(lambda row: 'Pass' if row['Math'] >= 50 and row['English'] >= 50 else 'Fail')

      Solution

      1. Step 1: Understand the condition for passing

        Pass if average of 'Math' and 'English' >= 50, else Fail.
      2. Step 2: Check each option's logic and axis

        df['Result'] = df.apply(lambda row: 'Pass' if (row['Math'] + row['English']) / 2 >= 50 else 'Fail', axis=1) correctly uses axis=1 for row-wise apply and calculates average properly. df['Result'] = df.apply(lambda col: 'Pass' if (col['Math'] + col['English']) / 2 >= 50 else 'Fail', axis=0) uses axis=0 (column-wise), which is wrong. df['Result'] = df.apply(lambda row: 'Pass' if row['Math'] >= 50 and row['English'] >= 50 else 'Fail') misses axis=1 and uses wrong condition. df['Result'] = df.apply(lambda row: 'Pass' if row['Math'] + row['English'] >= 50 else 'Fail', axis=1) checks sum >= 50, which is incorrect for average >= 50.
      3. Final Answer:

        df['Result'] = df.apply(lambda row: 'Pass' if (row['Math'] + row['English']) / 2 >= 50 else 'Fail', axis=1) -> Option C
      4. Quick Check:

        Use axis=1 and correct average condition [OK]
      Hint: Use axis=1 and check average inside lambda [OK]
      Common Mistakes:
      • Using axis=0 applies function column-wise
      • Forgetting to divide sum by 2 for average
      • Using wrong logical conditions
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard