Maison  >  Article  >  développement back-end  >  Comment diviser Pandas DataFrame en sous-ensembles en fonction de la valeur de la colonne ?

Comment diviser Pandas DataFrame en sous-ensembles en fonction de la valeur de la colonne ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-19 22:33:02662parcourir

How to Split Pandas DataFrame into Subsets Based on Column Value?

Diviser le DataFrame Pandas en fonction de la valeur de la colonne

Dans Pandas, un scénario couramment rencontré est la nécessité de diviser un DataFrame en plusieurs sous-ensembles en fonction de les valeurs présentes dans une colonne spécifique. Cela permet une analyse et une manipulation ciblées des données.

Pour y parvenir, nous pouvons exploiter la puissance de l'indexation booléenne dans Pandas. Considérons un DataFrame avec une colonne nommée « Ventes » et explorons comment nous pouvons la diviser en deux selon que la valeur « Ventes » est inférieure ou supérieure à une valeur seuil « s ».

Solution :

<code class="python"># Create a DataFrame with a "Sales" column
df = pd.DataFrame({'Sales':[10,20,30,40,50], 'A':[3,4,7,6,1]})
print (df)</code>
   A  Sales
0  3     10
1  4     20
2  7     30
3  6     40
4  1     50
<code class="python"># Split the DataFrame based on "Sales" values
s = 30

df1 = df[df['Sales'] >= s]
print (df1)</code>
   A  Sales
2  7     30
3  6     40
4  1     50

Cela crée un nouveau DataFrame, df1, qui contient les lignes où la valeur « Ventes » est supérieure ou égale à « s ».

<code class="python">df2 = df[df['Sales'] < s]
print (df2)
   A  Sales
0  3     10
1  4     20

df2 comprend les lignes où la valeur « Ventes » est inférieure à « s ».

Approche alternative utilisant la négation au niveau du bit :

Au lieu d'utiliser l'opérateur supérieur ou égal à, nous pouvons également utiliser la négation au niveau du bit (~) pour inverser le masque :

<code class="python">mask = df['Sales'] >= s
df1 = df[mask]
df2 = df[~mask]
print (df1)</code>
   A  Sales
2  7     30
3  6     40
4  1     50
<code class="python">print (df2)</code>
   A  Sales
0  3     10
1  4     20

Cette approche atteint l'objectif même répartition mais permet un style de codage plus concis et optimisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn