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:
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!