Create an account


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tut] Pandas Boolean Indexing

#1
Pandas Boolean Indexing

<div>
<div class="kk-star-ratings kksr-auto kksr-align-left kksr-valign-top" data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;1293935&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;top&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;Rate this post&quot;,&quot;legend&quot;:&quot;5\/5 - (1 vote)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;Pandas Boolean Indexing&quot;,&quot;width&quot;:&quot;142.5&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
<div class="kksr-stars">
<div class="kksr-stars-inactive">
<div class="kksr-star" data-star="1" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" data-star="2" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" data-star="3" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" data-star="4" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" data-star="5" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
</p></div>
<div class="kksr-stars-active" style="width: 142.5px;">
<div class="kksr-star" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
<div class="kksr-star" style="padding-right: 5px">
<div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</p></div>
</p></div>
</div>
<div class="kksr-legend" style="font-size: 19.2px;"> 5/5 – (1 vote) </div>
</p></div>
<p class="has-global-color-8-background-color has-background"><strong>Boolean indexing in Pandas filters DataFrame rows using conditions. Example: <code>df[df['column'] > 5]</code> returns rows where <code>'column'</code> values exceed 5. Efficiently manage and manipulate data with this method.</strong></p>
<p>Here’s an easy example:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="9-11" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd # Create a sample DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40], 'City': ['New York', 'San Francisco', 'Los Angeles', 'Seattle']}
df = pd.DataFrame(data) # Perform boolean indexing to filter rows with age greater than 30
age_filter = df['Age'] > 30
filtered_df = df[age_filter] # Display the filtered DataFrame
print(filtered_df)
</pre>
<p>This code creates a DataFrame with data for four people, then uses boolean indexing to filter out the rows with an age greater than 30. The filtered DataFrame is then printed.</p>
<p>Let’s dive slowly into Boolean Indexing in Pandas: <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f447.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://blog.finxter.com/wp-content/uploads/2023/04/image-147-1024x683.png" alt="" class="wp-image-1293964" srcset="https://blog.finxter.com/wp-content/uploads/2023/04/image-147-1024x683.png 1024w, https://blog.finxter.com/wp-content/uplo...00x200.png 300w, https://blog.finxter.com/wp-content/uplo...68x512.png 768w, https://blog.finxter.com/wp-content/uplo...ge-147.png 1168w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h2 class="wp-block-heading">Understanding Boolean Indexing</h2>
<p>Boolean indexing is a powerful feature in pandas that allows filtering and selecting data from DataFrames using a boolean vector. It’s particularly effective when applying complex filtering rules to large datasets <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f603.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. </p>
<p>To use boolean indexing, a DataFrame, along with a boolean index that matches the DataFrame’s index or columns, must be present.</p>
<p>To start, there are different ways to apply boolean indexing in pandas. One can access a DataFrame with a boolean index, apply a boolean mask, or filter data based on column or index values <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f9d0.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. </p>
<p>For instance, boolean indexing can filter entries in a dataset with specific criteria, such as data points above or below a certain threshold or specific ranges <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f50e.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<p>Working with boolean indexes is pretty straightforward. First, create a condition based on which data will be selected. This condition will generate a boolean array, which will then be used in conjunction with the pandas DataFrame to select only the desired data <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f3af.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<p>Here’s a table with examples of boolean indexing in pandas:</p>
<figure class="wp-block-table is-style-stripes">
<table>
<thead>
<tr>
<th>Example</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>df[df['column'] &gt; 10]</code></td>
<td>Select only rows where <code>'column'</code> has a value greater than 10.</td>
</tr>
<tr>
<td><code>df[(df['column1'] == 'A') &amp; (df['column2'] &gt; 5)]</code></td>
<td>Select rows where <code>'column1'</code> is equal to <code>'A'</code> and <code>'column2'</code> has a value greater than 5.</td>
</tr>
<tr>
<td><code>df[~(df['column'] == 'B')]</code></td>
<td>Select rows where <code>'column'</code> is not equal to <code>'B'</code>.</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading">How Boolean Indexing Works in Pandas</h2>
<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" loading="lazy" width="1024" height="682" src="https://blog.finxter.com/wp-content/uploads/2023/04/image-146-1024x682.png" alt="" class="wp-image-1293963" srcset="https://blog.finxter.com/wp-content/uploads/2023/04/image-146-1024x682.png 1024w, https://blog.finxter.com/wp-content/uplo...00x200.png 300w, https://blog.finxter.com/wp-content/uplo...68x512.png 768w, https://blog.finxter.com/wp-content/uplo...ge-146.png 1168w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
<p>Boolean indexing in Pandas is a technique used to filter data based on actual values in the DataFrame, rather than row/column labels or integer locations. This allows for a more intuitive and efficient way to select subsets of data based on specific conditions. <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Let’s dive into the steps on how boolean indexing works in Pandas:</p>
<h3 class="wp-block-heading">Creating Boolean Arrays</h3>
<p>Before applying boolean indexing, you first need to create a boolean array. This array contains True and False values corresponding to whether a specific condition is met in the DataFrame. <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/26a1.png" alt="⚡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<p>Consider the following example:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]} df = pd.DataFrame(data)
bool_array = df['A'] > 2
</pre>
<p>In this example, we create a boolean array by checking which elements in column <code>'A'</code> are greater than 2. The resulting boolean array would be:</p>
<pre class="wp-block-preformatted"><code>[False, False, True, True]</code>
</pre>
<h3 class="wp-block-heading">Applying Boolean Arrays to DataFrames</h3>
<p>Once you have a boolean array, you can use it to filter the DataFrame based on the conditions you set. <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> To do so, simply pass the boolean array as an index to the DataFrame. </p>
<p>Let’s apply the boolean array we created in the previous step:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">filtered_df = df[bool_array]
</pre>
<p>This will produce a new DataFrame containing only the rows where the condition was met, in this case, the row that had values greater than 2:</p>
<pre class="wp-block-preformatted"><code> A B
2 3 7
3 4 8
</code></pre>
<p>To provide more examples, let’s consider the following table:</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<th>Boolean Condition</th>
<th>DataFrame[<code>boolean_array</code>]</th>
</tr>
<tr>
<td><code>df['A'] >= 3</code></td>
<td><code>A B 2 3 7 3 4 8</code></td>
</tr>
<tr>
<td><code>df['B'] &lt; 8</code></td>
<td><code>A B 0 1 5 1 2 6 2 3 7</code></td>
</tr>
<tr>
<td><code>(df['A'] == 1) | (df['B'] == 8)</code></td>
<td><code>A B 0 1 5 3 4 8</code></td>
</tr>
<tr>
<td><code>(df['A'] != 1) &amp; (df['B'] != 7)</code></td>
<td><code>A B 1 2 6 3 4 8</code></td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading">Filtering Data with Boolean Indexing</h2>
<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" loading="lazy" width="1024" height="682" src="https://blog.finxter.com/wp-content/uploads/2023/04/image-145-1024x682.png" alt="" class="wp-image-1293962" srcset="https://blog.finxter.com/wp-content/uploads/2023/04/image-145-1024x682.png 1024w, https://blog.finxter.com/wp-content/uplo...00x200.png 300w, https://blog.finxter.com/wp-content/uplo...68x512.png 768w, https://blog.finxter.com/wp-content/uplo...ge-145.png 1168w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
<p>Boolean indexing is also a powerful technique to <strong><em>filter data in Pandas DataFrames based on the actual values</em></strong> of the data, rather than row or column labels <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f43c.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. In this section, you’ll learn how to harness the power of boolean indexing to filter your data efficiently and effectively.</p>
<h3 class="wp-block-heading">Selecting Rows Based on Condition</h3>
<p>To select rows based on a condition, you can create a boolean mask by applying a logical condition to a column or dataframe. Then, use this mask to index your DataFrame and extract the rows that meet your condition <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f31f.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. For example:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">
import pandas as pd data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}
df = pd.DataFrame(data) mask = df['A'] > 2
filtered_data = df[mask]
</pre>
<p>In this example, the <code>mask</code> is a boolean Series with <code>True</code> values for rows with <code>A &gt; 2</code>, and <code>filtered_data</code> is the filtered DataFrame containing only the rows that meet the condition.</p>
<h3 class="wp-block-heading">Combining Conditions with Logical Operators</h3>
<p>For more complex filtering, you can combine multiple conditions using logical operators like <code>&amp;</code> (AND), <code>|</code> (OR), and <code>~</code> (NOT). Just remember to use parentheses to separate your conditions:</p>
<p><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f60a.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Example:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">
mask2 = (df['A'] > 2) &amp; (df['B'] &lt; 8)
filtered_data2 = df[mask2]
</pre>
<p>This filters the data for rows where both <code>A &gt; 2</code> and <code>B &lt; 8</code>.</p>
<h3 class="wp-block-heading">Using Query Method for Complex Filtering</h3>
<p>For even more complex filtering conditions, you can use the <code>query</code> method. This method allows you to write your conditions using column names, making it more readable and intuitive:</p>
<p><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f680.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Example:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">
filtered_data3 = df.query('A > 2 and B &lt; 8')
</pre>
<p>This achieves the same result as the <code>masked2</code> example, but with a more readable syntax.</p>
<h3 class="wp-block-heading">Pandas Boolean Indexing Multiple Conditions</h3>
<p>Here is a table summarizing the examples of boolean indexing with multiple conditions in Pandas:</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<th>Example</th>
<th>Description</th>
</tr>
<tr>
<td><code>df[(df['A'] &gt; 2) &amp; (df['B'] &lt; 8)]</code></td>
<td>Rows where A &gt; 2 and B &lt; 8</td>
</tr>
<tr>
<td><code>df[(df['A'] &gt; 2) | (df['B'] &lt; 8)]</code></td>
<td>Rows where A &gt; 2 or B &lt; 8</td>
</tr>
<tr>
<td><code>df[~(df['A'] &gt; 2)]</code></td>
<td>Rows where A is not &gt; 2</td>
</tr>
<tr>
<td><code>df.query('A &gt; 2 and B &lt; 8')</code></td>
<td>Rows where A &gt; 2 and B &lt; 8, using <code>query</code> method</td>
</tr>
</tbody>
</table>
</figure>
<p>With these techniques at your disposal, you’ll be able to use boolean indexing effectively to filter your Pandas DataFrames, whether you’re working with simple or complex conditions <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f389.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<h2 class="wp-block-heading">Modifying Data Using Boolean Indexing</h2>
<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" loading="lazy" width="1024" height="682" src="https://blog.finxter.com/wp-content/uploads/2023/04/image-144-1024x682.png" alt="" class="wp-image-1293961" srcset="https://blog.finxter.com/wp-content/uploads/2023/04/image-144-1024x682.png 1024w, https://blog.finxter.com/wp-content/uplo...00x200.png 300w, https://blog.finxter.com/wp-content/uplo...68x512.png 768w, https://blog.finxter.com/wp-content/uplo...ge-144.png 1168w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
<p>Boolean indexing is also great to modify data within a DataFrame or Series by specifying conditions that return a boolean array. These boolean arrays are then used to index the original DataFrame or Series, making it easy to modify selected rows or columns based on specific criteria. <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f43c.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>In essence, it allows you to manipulate and clean data according to various conditions. </strong>It’s perfect for tasks like replacing missing or erroneous values, transforming data, or selecting specific data based on the criteria you set. This process is efficient and versatile, allowing for greater control when working with large datasets.<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f9ea.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Now, let’s take a look at some examples of Boolean indexing in pandas to get a better understanding of how it works. The table below demonstrates various ways of modifying data using Boolean indexing:</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<th>Operation</th>
<th>Example</th>
</tr>
<tr>
<td>Selecting rows that fulfill a condition</td>
<td><code>df[df['column_name'] &gt; value]</code></td>
</tr>
<tr>
<td>Modifying values based on a condition</td>
<td><code>df.loc[df['column_name'] &gt; value, 'column_name'] = new_</code></td>
</tr>
<tr>
<td>Replacing values based on a condition</td>
<td><code>df['column_name'].where(df['column_name'] &gt; value, alternative_value)</code></td>
</tr>
<tr>
<td>Performing calculation on values meeting a condition</td>
<td><code>df['column_name'][df['column_name'] &gt; value] *= multiplier</code></td>
</tr>
</tbody>
</table>
</figure>
<p>These examples showcase some basic boolean indexing operations in pandas, but it’s worth noting that more complex operations can be achieved using boolean indexing too. The key takeaway is that this powerful technique can quickly and efficiently modify your data, making your data processing tasks simpler and more effective.<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f469-200d-1f4bb.png" alt="?‍?" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f468-200d-1f4bb.png" alt="?‍?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>So, next time you’re working with data in pandas, don’t forget to employ this nifty technique to make your data wrangling tasks more manageable and efficient. Happy data cleaning! <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f9f9.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2 class="wp-block-heading">Advanced Applications</h2>
<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" loading="lazy" width="911" height="911" src="https://blog.finxter.com/wp-content/uploads/2023/04/image-143.png" alt="" class="wp-image-1293960" srcset="https://blog.finxter.com/wp-content/uploads/2023/04/image-143.png 911w, https://blog.finxter.com/wp-content/uplo...00x300.png 300w, https://blog.finxter.com/wp-content/uplo...50x150.png 150w, https://blog.finxter.com/wp-content/uplo...68x768.png 768w" sizes="(max-width: 911px) 100vw, 911px" /></figure>
</div>
<p>Boolean indexing in Pandas has a wide range of advanced applications, allowing users to harness its power in complex scenarios. In this section, we will dive into a few of these applications, exploring their usefulness and demonstrating practical examples. <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f603.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h3 class="wp-block-heading">Using Indexers with Boolean Indexing</h3>
<p>Combining indexers like <code>iloc</code> and <code>loc</code> with boolean indexing enhances the ability to select specific data subsets. Utilizing indexers in conjunction with boolean indexing allows you to specify both rows and columns, maintaining that sweet balance of performance and flexibility.<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f44d.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h3 class="wp-block-heading">Handling Missing Data with Boolean Indexing</h3>
<p>Dealing with missing data can be quite challenging. However, boolean indexing in Pandas comes to the rescue.<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4aa.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> With boolean indexing, users can quickly filter out missing data by applying boolean masks. This makes data cleaning and preprocessing a breeze. No more headaches navigating through messy data! <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f680.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h3 class="wp-block-heading">Pandas Boolean Indexing MultiIndex</h3>
<p>MultiIndex, also known as a hierarchical index, adds another layer of depth to boolean indexing. <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f31f.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> By incorporating boolean indexing with <code>MultiIndex</code> DataFrames, you can access and manipulate data across multiple levels, enhancing your data exploration capabilities. </p>
<p>Here’s an example demonstrating the use of a <code>MultiIndex</code> in combination with boolean indexing in Pandas:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd # Create a sample DataFrame with MultiIndex
index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1), ('B', 2)], names=['Category', 'Subcategory'])
data = {'Value': [10, 15, 20, 25]}
df = pd.DataFrame(data, index=index) # Perform boolean indexing to filter rows where 'Category' is 'A' and 'Value' is greater than 12
category_filter = df.index.get_level_values('Category') == 'A'
value_filter = df['Value'] > 12
filtered_df = df[category_filter &amp; value_filter] # Display the filtered DataFrame
print(filtered_df)
</pre>
<p>This code creates a DataFrame with a <code>MultiIndex</code> consisting of two levels: <code>'Category'</code> and <code>'Subcategory'</code>. Then, it uses boolean indexing to filter the rows where the <code>'Category'</code> is <code>'A'</code> and the <code>'Value'</code> column is greater than 12. The filtered DataFrame is then printed.</p>
<p>The output of the provided code is:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""> Value
Category Subcategory A 2 15
</pre>
<p>The filtered DataFrame contains only one row where the <code>'Category'</code> is <code>'A'</code>, the <code>'Subcategory'</code> is 2, and the <code>'Value'</code> is 15, as this row meets both conditions specified in the boolean indexing.</p>
<p>Talk about leveling up your data analysis game! <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f3ae.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h3 class="wp-block-heading">Pandas Boolean Indexing DateTime</h3>
<p>Time series data often requires efficient filtering and slicing. With boolean indexing applied to DateTime data, users can effortlessly filter their data based on specific date ranges, time periods, or even individual timestamps. <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/23f2.png" alt="⏲" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You’ll never lose track of time with this powerful feature! <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4c5.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h3 class="wp-block-heading">Examples of Boolean Indexing in Pandas</h3>
<p>Below is a table showcasing a few examples of boolean indexing in action:</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<th>Scenario</th>
<th>Example Code</th>
</tr>
<tr>
<td>Filtering rows where column A is greater than 5</td>
<td><code>data[data['A'] &gt; 5]</code></td>
</tr>
<tr>
<td>Selecting rows where column B is equal to ‘x’</td>
<td><code>data[data['B'] == 'x']</code></td>
</tr>
<tr>
<td>Combining multiple conditions with logical AND</td>
<td><code>data[(data['A'] &gt; 5) &amp; (data['B'] == 'x')]</code></td>
</tr>
<tr>
<td>Filtering rows with missing data in column C</td>
<td><code>data[data['C'].notnull()]</code></td>
</tr>
<tr>
<td>Selecting data within a specific date range</td>
<td><code>data[(data['DateTime'] &gt;= '2023-01-01') &amp; (data['DateTime'] &lt;= '2023-12-31')]</code></td>
</tr>
</tbody>
</table>
</figure>
<p>Now you have a better understanding of advanced applications with boolean indexing in Pandas! Happy data wrangling! <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f389.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
</p>
<h2 class="wp-block-heading">Pandas Boolean Indexing “OR”</h2>
<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" loading="lazy" width="607" height="911" src="https://blog.finxter.com/wp-content/uploads/2023/04/image-142.png" alt="" class="wp-image-1293959" srcset="https://blog.finxter.com/wp-content/uploads/2023/04/image-142.png 607w, https://blog.finxter.com/wp-content/uplo...00x300.png 200w" sizes="(max-width: 607px) 100vw, 607px" /></figure>
</div>
<p>In Pandas, Boolean indexing is a powerful way to filter and manipulate data using logical conditions <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f9e0.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. The “OR” operator, denoted by the symbol “<code>|</code>“, allows users to select rows that satisfy at least one of the specified conditions <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f3af.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. In this section, let’s explore how the “OR” operator works with Boolean indexing in details, along with some examples <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f468-200d-1f4bb.png" alt="?‍?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<p>With Pandas, users can combine multiple logical conditions using the “OR” operator by simply providing them with a “<code>|</code>“. This can be especially useful when working on complex data filtering tasks <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f9ea.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. Normally, the conditions are enclosed in parentheses to maintain order and group them correctly. Just remember to use the proper Boolean operator carefully! <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f609.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>For a better understanding, let’s take a look at the following example on how the “OR” operator works with Boolean indexing in Pandas:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd # Sample DataFrame
data = {'A': [1, 2, 3, 4, 5], 'B': [6, 7, 8, 9, 10]}
df = pd.DataFrame(data) # Boolean indexing using "OR" operator
result = df[(df['A'] > 3) | (df['B'] &lt;= 7)]
</pre>
<p>In this example, we have a DataFrame with two columns ‘A’ and ‘B’, and the goal is to filter rows where the value of ‘A’ is greater than 3 or the value of ‘B’ is less than or equal to 7. The resulting DataFrame will include rows that meet either condition <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f44c.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<figure class="wp-block-table is-style-stripes">
<table>
<thead>
<tr>
<th>Column A</th>
<th>Column B</th>
<th>Condition</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>6</td>
<td>True</td>
</tr>
<tr>
<td>2</td>
<td>7</td>
<td>True</td>
</tr>
<tr>
<td>3</td>
<td>8</td>
<td>False</td>
</tr>
<tr>
<td>4</td>
<td>9</td>
<td>True</td>
</tr>
<tr>
<td>5</td>
<td>10</td>
<td>True</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading">Pandas Boolean Indexing “NOT”</h2>
<p><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f43c.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Pandas boolean indexing is a powerful tool used for selecting subsets of data based on the actual values of the data in a DataFrame, which can make filtering data more intuitive <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f9e0.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. In this section, we’ll focus on the “NOT” operation and its usage in pandas boolean indexing.</p>
<p>The “NOT” operation is primarily used to reverse the selection made by the given condition, meaning if the condition is initially true, it will turn false, and vice versa. In pandas, the “not” operation can be performed using the tilde operator (~) <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f632.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. It can be particularly helpful when filtering the data that does not meet specific criteria.</p>
<p>Let’s consider some examples to understand better how “NOT” operation works in pandas boolean indexing:</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<th>Example</th>
<th>Description</th>
</tr>
<tr>
<td><code>~df['column_name'].isnull()</code></td>
<td>Selects rows where ‘<code>column_name</code>‘ is NOT null</td>
</tr>
<tr>
<td><code>~(df['column_name'] > 100)</code></td>
<td>Selects rows where ‘<code>column_name</code>‘ is NOT greater than 100</td>
</tr>
<tr>
<td><code>~df['column_name'].str.contains('value')</code></td>
<td>Selects rows where ‘<code>column_name</code>‘ does NOT contain the string <code>'value'</code></td>
</tr>
</tbody>
</table>
</figure>
<p><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f446.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> In these examples, the tilde operator (~) is utilized to perform the “NOT” operation, which helps to refine the selection criteria to better suit our needs. We can also combine the “NOT” operation with other boolean indexing operations like “AND” (<code>&amp;</code>) and “OR” (<code>|</code>) to create more complex filtering conditions <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f389.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<p>Remember, when working with pandas boolean indexing, it’s essential to use parentheses to group conditions properly, as it ensures the correct precedence of operations and avoids ambiguity when combining them <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f913.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<p>Boolean indexing in pandas provides an efficient and easy way to filter your data based on specific conditions, and mastering the different operations, such as “NOT”, allows you to craft precise and powerful selections in your DataFrames <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4aa.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<h2 class="wp-block-heading">Pandas Boolean Indexing in List</h2>
<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" loading="lazy" width="1024" height="804" src="https://blog.finxter.com/wp-content/uploads/2023/04/image-141-1024x804.png" alt="" class="wp-image-1293955" srcset="https://blog.finxter.com/wp-content/uploads/2023/04/image-141-1024x804.png 1024w, https://blog.finxter.com/wp-content/uplo...00x235.png 300w, https://blog.finxter.com/wp-content/uplo...68x603.png 768w, https://blog.finxter.com/wp-content/uplo...ge-141.png 1161w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
<p><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f43c.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Pandas Boolean indexing is a powerful technique that allows you to select subsets of data in a DataFrame based on actual values rather than row or column labels <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f62e.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. This technique is perfect for filtering data based on specific conditions <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f44c.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<p>When using Boolean indexing, you can apply logical conditions using <a href="https://blog.finxter.com/python-comparison-operators/" data-type="post" data-id="33245" target="_blank" rel="noreferrer noopener">comparison operators</a> or combination operators like <code>&amp;</code> (and) and <code>|</code> (or) <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4a1.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. Keep in mind that when applying multiple conditions, you must wrap each condition in parentheses for proper evaluation <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<p>Let’s go through a few examples to better understand how Boolean indexing with lists works!</p>
<figure class="wp-block-table is-style-stripes">
<table>
<thead>
<tr>
<th>Example</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>df[df['col1'].isin(['a', 'b'])]</code></td>
<td>Select rows where ‘col1’ is either ‘a’ or ‘b’</td>
</tr>
<tr>
<td><code>df[(df['col1'] == 'a') | (df['col1'] == 'b')]</code></td>
<td>Select rows where ‘col1’ is either ‘a’ or ‘b’, alternate method</td>
</tr>
<tr>
<td><code>df[(df['col1'] == 'a') &amp; (df['col2'] &gt; 10)]</code></td>
<td>Select rows where ‘col1’ is ‘a’ and ‘col2’ is greater than 10</td>
</tr>
<tr>
<td><code>df[~df['col1'].isin(['a', 'b'])]</code></td>
<td>Select rows where ‘col1’ is neither ‘a’ nor ‘b’, using the ‘not in’ condition</td>
</tr>
</tbody>
</table>
</figure>
<p>Remember, when working with Pandas Boolean indexing, don’t forget to import the pandas library, use proper syntax, and keep practicing <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f393.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />! This way, you’ll be a Boolean indexing pro in no time <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f469-200d-1f4bb.png" alt="?‍?" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f468-200d-1f4bb.png" alt="?‍?" class="wp-smiley" style="height: 1em; max-height: 1em;" />!</p>
<h2 class="wp-block-heading">Pandas Boolean Indexing Columns</h2>
<p>Boolean indexing in pandas refers to the process of selecting subsets of data based on their actual values rather than row or column labels or integer locations. It utilizes a boolean vector as a filter for the data in a DataFrame <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4ca.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. This powerful technique enables users to easily access specific data pieces based on conditions while performing data analysis tasks <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f9d0.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<p>In pandas, boolean indexing commonly employs logical operators such as AND (<code>&amp;</code>), OR (<code>|</code>), and NOT (<code>~</code>) to create a boolean mask which can be used to filter the DataFrame. The process usually involves creating these logical expressions by applying conditions to one or more columns, and then applying the boolean mask to the DataFrame to achieve the desired subset <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f3af.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<p>Here’s a table showing some examples of boolean indexing with pandas:</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<th>Example</th>
<th>Description</th>
</tr>
<tr>
<td><code>df[df['A'] &gt; 2]</code></td>
<td>Filter DataFrame where values in column A are greater than 2 <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f60a.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</td>
</tr>
<tr>
<td><code>df[(df['A'] &gt; 2) &amp; (df['B'] &lt; 5)]</code></td>
<td>Select rows where column A values are greater than 2, and column B values are less than 5 <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f389.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</td>
</tr>
<tr>
<td><code>df[df['C'].isin([1, 3, 5])]</code></td>
<td>Filter DataFrame where column C contains any of the values 1, 3, or 5 <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f50d.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</td>
</tr>
<tr>
<td><code>df[~df['D'].str.contains('abc')]</code></td>
<td>Select rows where column D doesn’t contain the substring ‘abc’ <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f6ab.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</td>
</tr>
</tbody>
</table>
</figure>
<p>Boolean indexing is an essential tool for data manipulation in pandas, offering a versatile solution to filter and identify specific elements within the data. Harnessing the power of boolean indexing can greatly improve the efficiency of data analysis tasks, making it a valuable skill to master for users working with pandas data structures <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f469-200d-1f4bb.png" alt="?‍?" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f468-200d-1f4bb.png" alt="?‍?" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>
<h2 class="wp-block-heading">Pandas Boolean Indexing Set Value</h2>
<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" loading="lazy" width="1024" height="682" src="https://blog.finxter.com/wp-content/uploads/2023/04/image-140-1024x682.png" alt="" class="wp-image-1293954" srcset="https://blog.finxter.com/wp-content/uploads/2023/04/image-140-1024x682.png 1024w, https://blog.finxter.com/wp-content/uplo...00x200.png 300w, https://blog.finxter.com/wp-content/uplo...68x512.png 768w, https://blog.finxter.com/wp-content/uplo...ge-140.png 1168w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
<p>In Pandas, Boolean indexing is a powerful feature that allows users to filter data based on the actual values in a DataFrame <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4ca.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />, instead of relying on their row or column labels. This technique uses a Boolean vector (<code>True</code> or <code>False</code> values) to filter out and select specific data points in a DataFrame <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4a1.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" />. Let’s dive into how it works!</p>
<p>Using logical operators such as AND (&amp;), OR (|), and NOT (~), Pandas makes it easy to combine multiple conditions while filtering data. Below is a table showcasing some examples of how to use Boolean indexing in Pandas to set values with different conditions:</p>
<figure class="wp-block-table is-style-stripes">
<table>
<tbody>
<tr>
<th>Condition</th>
<th>Code Example</th>
</tr>
<tr>
<td>Setting values based on a single condition</td>
<td><code>df.loc[df['column_name'] &gt; 10, 'new_column'] = 'Greater than 10'</code></td>
</tr>
<tr>
<td>Setting values based on multiple conditions (AND)</td>
<td><code>df.loc[(df['column1'] == 'A') &amp; (df['column2'] == 'B'), 'new_column'] = 'Both conditions met'</code></td>
</tr>
<tr>
<td>Setting values based on multiple conditions (OR)</td>
<td><code>df.loc[(df['column1'] == 'A') | (df['column2'] == 'B'), 'new_column'] = 'One condition met'</code></td>
</tr>
<tr>
<td>Setting values based on NOT conditions</td>
<td><code>df.loc[ ~(df['column_name'] &lt; 10), 'new_column'] = 'Not less than 10'</code></td>
</tr>
</tbody>
</table>
</figure>
<p>When working with Pandas, Boolean indexing can tremendously simplify the process of filtering and modifying datasets for specific tasks <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" />. Remember that the possibilities are virtually endless, and you can always combine conditional statements to manipulate your datasets in numerous ways!</p>
<h2 class="wp-block-heading">Pandas Boolean Indexing Not Working</h2>
<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" loading="lazy" width="1024" height="682" src="https://blog.finxter.com/wp-content/uploads/2023/04/image-139-1024x682.png" alt="" class="wp-image-1293953" srcset="https://blog.finxter.com/wp-content/uploads/2023/04/image-139-1024x682.png 1024w, https://blog.finxter.com/wp-content/uplo...00x200.png 300w, https://blog.finxter.com/wp-content/uplo...68x512.png 768w, https://blog.finxter.com/wp-content/uplo...ge-139.png 1168w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
<p>Sometimes when working with Pandas, you may encounter issues with Boolean indexing. There are a few common scenarios that can lead to Boolean indexing not functioning as expected. Let’s go through these cases and their possible solutions. <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f60a.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>One common issue arises when using Boolean Series as an indexer. This may lead to an <code>IndexingError: Unalignable boolean Series provided as indexer</code> error. This usually occurs when the Boolean mask cannot be aligned on the index, which is used by default when trying to filter a DataFrame <a href="https://stackoverflow.com/questions/45352909/pandas-indexingerror-unalignable-boolean-series-provided-as-indexer" target="_blank" rel="noreferrer noopener">(source)</a>.</p>
<p>To overcome this problem, ensure that your Boolean Series index aligns with your DataFrame index. You can use the `<code><a href="https://blog.finxter.com/slicing-data-from-a-pandas-dataframe-using-loc-and-iloc/" data-type="post" data-id="230997" target="_blank" rel="noreferrer noopener">.loc</a></code>` method with the same index as the DataFrame to make sure the Series is alignable:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">df[df.notnull().any(axis=0).loc[df.columns]]
</pre>
<p>Another issue that may arise is confusion with <a href="https://blog.finxter.com/python-logical-operators-blog-video/" data-type="post" data-id="33318" target="_blank" rel="noreferrer noopener">logical operators</a> during the Boolean indexing process. In Pandas, logical operators for Boolean indexing are different from standard Python logical operators. You should use <code>&amp;</code> for logical AND, <code>|</code> for logical OR, and <code>~</code> for logical NOT <a href="https://stackoverflow.com/questions/21415661/logical-operators-for-boolean-indexing-in-pandas">(source)</a>.</p>
<p>For example, to filter rows based on two conditions:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">df[(df['col1'] == x) &amp; (df['col2'] == y)]
</pre>
<p><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f4dd.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Here is a table with some examples of Boolean indexing in Pandas:</p>
<figure class="wp-block-table is-style-stripes">
<table>
<thead>
<tr>
<th>Condition</th>
<th>Code Example</th>
</tr>
</thead>
<tbody>
<tr>
<td>Rows with values in ‘col1’ equal to x</td>
<td><code>df[df['col1'] == x]</code></td>
</tr>
<tr>
<td>Rows with values in ‘col1’ less than x and ‘col2’ greater than y</td>
<td><code>df[(df['col1'] &lt; x) &amp; (df['col2'] &gt; y)]</code></td>
</tr>
<tr>
<td>Rows where ‘col1’ is not equal to x</td>
<td><code>df[~(df['col1'] == x)]</code></td>
</tr>
</tbody>
</table>
</figure>
<p>By understanding these potential pitfalls, you can ensure smoother Boolean indexing in your Pandas projects. Good luck, and happy data wrangling! <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f680.png" alt="?" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
</div>


https://www.sickgaming.net/blog/2023/04/...-indexing/
Reply



Forum Jump:


Users browsing this thread:
2 Guest(s)

Forum software by © MyBB Theme © iAndrew 2016