0
votes

Créez des filtres au sein de Groupby Pandas

J'ai le résultat suivant: xxx

que j'ai reçu avec le code suivant: xxx

mais j'ai besoin d'un filtre qui vérifie les 3 premières lignes de la colonne "valor_new" si elle a le mot "contrato".

Je ne peux pas créer de filtre pouvant faire cela, chaque filtre que je fais, cela ne me renvoie que des résultats où le mot "Contrato" apparaît dans la première ligne, comme exemple ci-dessous: xxx


4 commentaires

Pouvez-vous nous donner un exemple de Dataframe à tester? Il y a trop de données ici, je suis confondu lequel à considérer, juste un exemple de données une production attendue aiderait


Le premier résultat peut être utilisé à titre d'exemple. Le fait est que j'ai besoin de mon filtre pour m'apporter des résultats où je vois dans les 3 premières lignes si vous avez le contrat de mot. parce qu'il y a des résultats où le contrat de mot n'existera pas


Vous voulez donc tous les groupes où les 3 premières lignes contiennent le mot «contrat»?


oui c'est l'intention


3 Réponses :


0
votes

Si la colonne est une colonne de chaîne, il suffit de filtrer les valeurs par chaîne contient . En supposant que votre DF est groupe . Puisque vous voulez que tous les résultats montrent, vous pouvez faire cette solution non élégante qui fait 3 dataframes:

premier, ceux qui contiennent du contrat: xxx < / Pré>

Ensuite, une autre qui ne fait pas (notez le "~" au début de la .loc, cela signifie opposé: xxx

Enfin, vous concessez tous les deux avec ceux avec Contrato d'abord: xxx

Notez que c'est sensible à la casse et que j'ai ajouté un Fillna () < / code> parce que vous ne pouvez pas rechercher s'il a des valeurs NaN.

EDIT: Ajout du (3) à la fin pour obtenir les 3 premières lignes, comme Vous avez demandé.

Edit2: édité la solution d'origine

vlwflws


5 commentaires

Cela m'a apporté juste les lignes avec le mot "contrato", j'en ai besoin pour être affichée tout, et ce filtre le contrat de mot dans les 3 premières lignes.


Filtrer comme dans SHOW Contrato sur les trois premières lignes ou retirer les 3 premières lignes si contient Contrat? Suis-je raison de supposer que vous êtes aussi brésilien? Si oui, pourriez-vous expliquer en Portugais Aswell?


UE PRÉCISO QUE ELE FILTRE E TRAGA TODO O TODO ODERADO, Não Quero Excluir, alors que Linhas Que Posezem A Palavra Contraat.


Então Mostrar Tudo Queue, Mas O Que Tiver Contrato Nas Primeiras Linhas? SE Tiver MAIS DE 3 RÉSULTADOS COM Contrato, Apenas Mostrar 3? Anglais: Il a besoin de tous les résultats sans exclure ceux qui ont contraint. En outre, j'ai demandé s'il doit juste trier les résultats avec Contrat en premier et que devrait-il arriver s'il apparaît plus de 3 fois


Sa réponse m'a aidé avec mes interrogations, mais il a fait un autre problème, j'ai du mal à le résoudre. Si je ne peux pas revenir à la question.



0
votes

IIUC, vous devez vérifier vos données de données groupées pour 'contrato' code> dans la colonne 'valor_new' code> dans les trois premières lignes. Cette chèque devrait le faire:

if (group['VALOR_NEW'].head(3) == 'Contrato').any():
    print(group)


0 commentaires

1
votes

Vous pouvez utiliser quelque chose comme ceci:

dfs = ['df_' + str(x) for x in my_list]
dicdf = dict()
i = 0 
while i < len(dfs):
    dicdf[dfs[i]] = df[(df['CHAMADO']== my_list[i])]
    i = i + 1
print(dicdf)


7 commentaires

Lire la question à nouveau après cette réponse m'a fait comprendre ce qui était nécessaire. Donc, pour chaque groupe de "Chamado", il doit vérifier si leurs 3 premières lignes contiennent "Contrato". Bon anky_91


Mais je dois séparer les articles par groupe, comme je le fais dans le groupe RET_GROUP = G1.GROUPBY (['Chamado']) L'ensemble de lataframe n'est pas pour moi d'analyser les résultats.


@Andreyglauzer pour que vous souhaitiez un fichier de données séparé pour chaque groupe où les 3 premières lignes contiennent le mot?


@Andreyglauzer: Avez-vous essayé la solution que j'ai donnée? Cela ne reviendra pas le Dataframe complet, juste ceux qui satisfont à votre condition.


Oui j'ai essayé et cela ne me renvoie que les rangées qui vont dans cette condition, pas le Dataframe séparé par groupe


@Andreyglauzer Vous voulez des données de données séparées pour le groupe de 3 ou l'ensemble du groupe?


J'ai besoin d'un groupe entier