essayer d'obtenir des colonnes qui a zéro pour certaines colonnes, mais pas zéro pour les autres. Dataframe: P> import pandas as pd
df = pd.DataFrame({'t': [0, 0, 11,0], 't2': [0, 0, 0, 0], 'z3': [0, 0, 12, 0], 't4': [0, 0, 2, 0],
't5': [0, 0, 0, 0], 'z6': [0, 0, 4, 0], 't7': [1, 1, 0, 1], 't8': [1, 1, 0, 1],
'z9': [1, 1, 0, 1], 't10': [1, 1, 0, 1], 't11': [1, 1, 0, 1], 'z12': [1, 1, 0, 1]})
nozero=['z3','z6','z9','z12']
zero1=['t','t4','t7','t10']
zero2=['t2','t5','t8','t11']
for x,y,z in zip(zero1, zero2, nozero):
print(df[((df[x]==0) | (df[y]==0)) & (df[z]!=0)])
3 Réponses :
Je pense que c'est à cause de Nan. nan! = 0 est vrai code>
Je vérifie juste zéro == 0 et nozero! = 0 permettra à Nan des colonnes nozero. Vous pouvez vérifier et supprimer tout nan code> s ou drawna code> tous ensemble
édité la question avec un exemple qui ne fonctionne pas avec votre code
Pouvez-vous mettre en place la sortie attendue pour l'exemple que vous avez monté? Ça va m'aider à visualiser
Je veux la ligne avec index n ° 2 avec t = 11
Bonjour, j'ai édité la question avec le code qui génère la ligne que je veux garder mais non efficace. Y a-t-il un meilleur moyen d'utiliser votre méthode?
Basé sur votre discussion avec @coldspeed, il semble que vous travaillez avec un fichier de données qui ressemble plus à après la conversion des types de données tels que @coldspeed suggéré, vous pouvez aller de l'avant et Utilisez ceci pour sélectionner les données que vous souhaitez. p> la première condition comme @Anno Leur réponse, vous pouvez supprimer des lignes avec des valeurs Je suggérerais également de lire plus sur le Je peux faire p> mais je ne sais pas si vous voulez Obtenez ce spécifique. Le problème consiste simplement à trouver les bonnes conditions booléennes pour ma méthode précédente. Nous voulons que la ligne 3 retourne vrai et les autres de retourner faux. Vous pouvez essayer de renommer cette question à "Indexation booléenne pour trouver des valeurs basées sur les conditions de la liste des colonnes" ou de la recherche de celle-ci. P> p> (DF [zéro] == 0) .All (1) code> trouve tout Valeurs dans les colonnes code> zéro code> 0 code> ( tout (1) code> indique aux pandas de réduire la colonne). La seconde condition trouve toutes les valeurs dans les colonnes code> nozero code> qui ne sont pas nulles, telles que @ananay, indiquent nan code>. P> nan code> à l'aide de drowna () code> de sorte que le résultat final est p> . Nan () code> et .all () code> méthodes. p>
édité la question avec un exemple qui ne fonctionne pas avec votre code
@RickyKim est ce nouveau Dataframe une réplique exacte du Dataframe que vous travaillez?
Oui j'ai maintenant. C'est le contenu exact du Dataframe (4 premières lignes)
@Rickykim, donc si une colonne de "zéro" a une colonne zéro et toute colonne "nozero" a une valeur qui n'est pas nulle, vous voulez cette ligne?
Oui, je veux la ligne avec t = 11 index = 2. Si tout (t, t2 paire est zéro et z pas zéro) je veux cette ligne
Bonjour, j'ai édité la question avec le code qui génère la ligne que je veux garder mais non efficace. Y a-t-il un meilleur moyen d'utiliser votre méthode?
Comme je ne pouvais pas obtenir les rangées désirées avec. Nany ou .Tous, j'ai écrit un code de contournement. Si vous trouvez une manière plus efficace sans boucler dans les colonnes, faites-le moi savoir. Merci pour toute l'aide @ananay MIAL, @ M42OP64, @coldspeed.
t t2 z3 t4 t5 z6 t7 t8 z9 t10 t11 z12 2 11 0 12 2 0 4 0 0 0 0 0 0