Masquage plusieurs colonnes sur une pandas dataframe en python
je suis à la recherche d'appliquer multiplier les masques sur chaque colonne d'une pandas dataset (respectivement pour ses propriétés) en python.
Dans la prochaine étape, je veux trouver (une) ligne(s) dans le dataframe que s'adapte à toutes les conditions.
donc j'ai:
df
Out[27]:
DE FL GA IA ID
0 0 1 0 0 0
1 1 0 1 0 1
2 0 0 1 0 0
3 0 1 0 0 0
4 0 0 0 0 0
mask_list = []
for i in range(0,5):
if i % 2==0:
mask_list.append(df[[i]]>0)
else:
mask_list.append(df[[i]]<1)
concat_frame = pa.DataFrame()
for mask in mask_list:
concat_frame =pa.concat((concat_frame, mask), axis=1)
concat_frame
Out[48]:
DE FL GA IA ID
0 False False False True False
1 True True True True True
2 False True True True False
3 False False False True False
4 False True False True False
[5 rows x 5 columns]
mise à jour
résultat attendu:
outcome
Out[60]:
DE FL GA IA ID
1 1 0 1 0 1
Voici le question :
comment puis-je appliquer le concat_mask sur df , de sorte que je de sélectionner des lignes, dans lequel tous les Boolean critères sont appariés (sont Vraies)?
Quel est le résultat attendu, aucun de vos lignes sont tout à fait Vrai, seulement " IA " comme une colonne a tous les Vrais valeurs
je Vous remercie pour Votre commentaire. J'ai ajouté les attendus outomce
je Vous remercie pour Votre commentaire. J'ai ajouté les attendus outomce
OriginalL'auteur Antihead | 2014-06-20
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les pandas de méthode et de logique booléenne. Comme EdChum commenté, je suis un peu pas clair encore sur votre exemple, mais un exemple similaire est
Si vous voulais de l'indice de l'origine dataframe par le masque que vous pourriez faire
Ou que ce que vous avez indiqué les lignes où toutes les lignes sont remplies
Ou si une ligne est vrai
Edit: Juste pour répondre à la question d'origine après clarification de commentaires, où nous voulons des critères de filtrage dans les différentes colonnes,
Pas exactement j'ai cru comprendre que, si je le fais ci-dessus, je voudrais obtenir un vide dataframe depuis l'index est Faux pour les deux lignes, est-ce que votre s_mask reportez-vous à msk dans mon exemple? donc, je ne suis pas sûr de savoir comment votre arriver[21] comme dans votre commentaire?
oh oui, j'ai sauté à l'avance. J'ai appliqué: msk1 = df[[0]]<0 msk2 = df[[1]]>3 s_mask = pandas.concat((msk1, msk2), axis=1)
Hey @Antihead laissez-moi savoir si cette dernière édition résolu votre souci
il l'a fait. Merci 🙂
OriginalL'auteur mgilbert
La partie la plus difficile ici est de comprendre pourquoi vous êtes à l'aide de pair/impair positions des colonnes afin de déterminer le traitement. En fonction de votre code, il semble que vous souhaitez colonnes 0, 2, et 4 pour être réellement 1 moins de leurs valeurs actuelles. Cependant, basé sur ce que vous prétendez est le résultat attendu, en effet, il semble que vous voulez colonnes 1 et 3 pour avoir 1 moins de leurs valeurs actuelles.
Mon code ci-dessus reflète la dernière hypothèse. L'idée générale fonctionne toujours; il suffit de le paramétrer afin de refléter ce que les colonnes dont vous avez réellement besoin d'avoir 1 moins la valeur de l', en supposant que vous faites de votre sortie désirée plus rigoureusement définis.
Probablement qui a besoin d'être nettoyé et transformée en une bonne fonction d'assistance de première qui montre explicitement les colonnes qui doivent avoir 1 moins de leur valeur, par rapport à laquelle les colonnes peuvent être laissés seuls.
L'approche que je donne n'est d'extraire les données à partir de l'original DataFrame en tant que de besoin.
OriginalL'auteur ely