How to Sum Across Two Columns in a Python DataFrame

Updated on May 25, 2026
Table of Contents
    The Solution

    To sum two columns in a pandas DataFrame and add the result as a new column, use the syntax: `data['new_column'] = data['column1'] + data['column2']`.

    The Concept

    When working with pandas DataFrames in Python, you might often need to sum values across two columns and store the result in a new column. This is a straightforward operation that can be achieved using simple arithmetic operations directly on the DataFrame columns.

    Deep Technical Dive & Misconceptions

    The key to summing two columns in a pandas DataFrame is understanding that DataFrame columns can be treated like arrays, allowing for element-wise operations. A common misconception is that performing arithmetic operations on DataFrame columns will not automatically add a new column to the DataFrame. Instead, the result of such operations is a pandas Series, which can then be assigned to a new column in the DataFrame.

    In the provided context, the user attempted to create a new column by directly assigning the result of the sum operation to a variable named sum. However, this approach only creates a Series. To properly add a new column to the DataFrame, you should assign the result of the operation to a new column name within the DataFrame, like so: data['variance'] = data['budget'] + data['actual'].

    Code Examples

    import pandas as pd
    
    data = pd.DataFrame({
        'cluster': ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'c', 'c'],
        'date': [
            '2014-01-01', '2014-02-01', '2014-03-01',
            '2014-04-01', '2014-05-01', '2014-06-01',
            '2014-07-01', '2014-08-01', '2014-09-01'
        ],
        'budget': [11000, 1200, 200, 200, 400, 700, 1200, 200, 200],
        'actual': [10000, 1000, 100, 300, 450, 1000, 1000, 100, 300]
    })
    
    data['variance'] = data['budget'] + data['actual']
    print(data)
    # Using a different column name for clarity
    
    data['total'] = data['budget'] + data['actual']
    print(data[['cluster', 'total']])
    # Adding a column with a different operation
    
    data['difference'] = data['budget'] - data['actual']
    print(data[['cluster', 'difference']])
    # Using a lambda function for more complex operations
    
    data['adjusted'] = data.apply(lambda row: row['budget'] * 1.1 + row['actual'], axis=1)
    print(data[['cluster', 'adjusted']])
    # Summing across multiple columns
    
    data['sum_all'] = data[['budget', 'actual']].sum(axis=1)
    print(data[['cluster', 'sum_all']])

    Comparison Table

    Operation Description
    data['new_column'] = data['col1'] + data['col2'] Sum two columns and store the result in a new column.
    data['difference'] = data['col1'] - data['col2'] Subtract one column from another and store the result.
    data.apply(lambda row: ...) Apply a function to each row for complex operations.
    data[['col1', 'col2']].sum(axis=1) Sum across multiple specified columns.

    Frequently Asked Questions

    How do I add a new column to a DataFrame?

    To add a new column, assign the desired values to a new column name in the DataFrame, e.g., data['new_column'] = values.

    Can I perform arithmetic operations directly on DataFrame columns?

    Yes, DataFrame columns support element-wise arithmetic operations, allowing you to add, subtract, multiply, or divide columns directly.

    What if I want to apply a more complex operation to each row?

    You can use the apply() method with a lambda function to perform more complex operations on each row of the DataFrame.

    Why does my operation return a Series instead of adding a column?

    Arithmetic operations on DataFrame columns return a Series by default. To add the result as a new column, assign the Series to a new column name in the DataFrame.

    Was this solution helpful?
    Report Broken Code or Error

    Help us improve. Paste the error you got or explain what went wrong.

    Thanks! We will review and fix this.

    Related Questions

    Comments & Discussions

    Log in or Sign up to join the discussion.