0
votes

Signaler une cholique Valeurs correspondant à la 1ère valeurs non nulles et dernières zéro d'une autre colonne

J'ai un Dataframe comme indiqué ci-dessous. Je tiens à numériser par la colonne «KRG» et trouvez la ligne qui correspond à la dernière valeur zéro dans cette colonne et à signaler «SG» de cette ligne (0,03). De plus, j'aimerais signaler "SG" correspondant à la 1ère valeur non nulle de "KRG" (0,04).

Je pourrais réaliser cela à l'aide de la requête () - voir mon code ci-dessous. P>

      Sg       Krg       Krw         Pc
0   0.00  0.000000  1.000000   0.000000
1   0.03  0.000000  0.500000   0.091233
2   0.04  0.000518  0.484212   0.093203
3   0.05  0.001624  0.468759   0.095237
4   0.06  0.003171  0.453639   0.097338
5   0.07  0.005098  0.438848   0.099508
6   0.08  0.007367  0.424382   0.101751
7   0.09  0.009953  0.410237   0.104070
8   0.10  0.012835  0.396410   0.106469
9   0.11  0.015999  0.382897   0.108950
10  0.12  0.019431  0.369695   0.111518


0 commentaires

3 Réponses :


0
votes

Pour votre première situation, nous nous assurons que "KRG" est 0 et que la valeur après 0 dans la colonne "KRG" n'est pas 0. xxx

pour la deuxième situation, nous Utilisez un processus de pensée similaire à celui ci-dessus, mais assurez-vous que la ligne ci-dessus est 0 à la place et qu'elles ne sont pas toutes les deux 0. xxx

en utilisant %% TIMEIT, ma version est d'environ 35% plus rapide.


2 commentaires

Merci pour ça. Le seul problème est que la sortie d'origine semble être une valeur alors que votre suggestion génère un fichier de données ou une liste. Y a-t-il un moyen de les signaler uniquement de valeurs? `` `` `1 0.03 Nom: SG, DTYPE: Float64 2 0.04 Nom: SG, DTYPE: Float64` `` `


Vous pouvez ajouter .values ​​ et vous obtiendrez simplement la valeur unique en tant que tableau NP.



0
votes

Nous pouvons simplifier cela en utilisant < Code> série.eq et série.ne qui représente égal et non égal . Nous combinons Dataframe.head et Dataframe.tail pour obtenir la première rangée et la dernière rangée.


xxx

sortie xxx


0 commentaires

0
votes

J'utilise simplement iDXmax et essayez d'accélérer votre message d'origine

s=df.query('Krg != 0')['Krg'].idxmin()# here you only need run idxmax once not twice 
print(df.loc[s, 'Sg'])
print(df.loc[s-1, 'Sg'])


0 commentaires