Home >Backend Development >Python Tutorial >How to Create an If-Else-Else Conditional Column in Pandas?

How to Create an If-Else-Else Conditional Column in Pandas?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-20 06:55:02577browse

How to Create an If-Else-Else Conditional Column in Pandas?

Creating an If-Else-Else Conditional Column in Pandas

When working with data, it's often necessary to create new columns based on specific conditions. Pandas provides a syntax that simplifies this process, allowing you to define if-elif-else conditions in a single step.

To illustrate this, let's consider the following DataFrame:

    A    B
a   2    2
b   3    1
c   1    3

We want to create a new column 'C' that follows these conditions:

  • If A == B, set C to 0
  • If A > B, set C to 1
  • If A < B, set C to -1

Using a Custom Function

One approach is to define a custom function that evaluates these conditions for each row:

<code class="python">def my_function(row):
    if row['A'] == row['B']:
        return 0
    elif row['A'] > row['B']:
        return 1
    else:
        return -1<p>The apply() method can then be used to apply this function to each row of the DataFrame, creating the 'C' column:</p>
<pre class="brush:php;toolbar:false"><code class="python">df['C'] = df.apply(my_function, axis=1)</code>

Vectorized Approach

For a more efficient, vectorized solution, we can use NumPy's np.where function along with pandas' logical indexing:

<code class="python">df['C'] = np.where(
    df['A'] == df['B'], 0, np.where(
    df['A'] >  df['B'], 1, -1))</code>

This eliminates the need for a custom function, resulting in a faster and more optimized solution.

The resulting DataFrame with the 'C' column:

    A    B    C
a   2    2    0
b   3    1    1
c   1    3   -1

The above is the detailed content of How to Create an If-Else-Else Conditional Column in Pandas?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn