je l'dataframe suivante:Supprimez des lignes ayant des valeurs consécutives à l'aide dataframe Pandas
import pandas as pd
df = pd.DataFrame({"A":['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'], "M":[11,4,9,2,2,5,5,6,6]})
Mon but est de supprimer toutes les lignes ayant 2 valeurs consécutives de la colonne M
pas égales entre elles.
Par conséquent, les lignes 0, 1 et 2 doivent être supprimées car les valeurs de M sont: 11! = 4, 4! = 9 et 9! = 2). Cependant, si 2 lignes ont la même valeur consécutive, elles doivent être conservées: les lignes 3 et 4 doivent être conservées car elles ont toutes les deux la valeur 2. Idem pour les lignes 5 et 6 qui ont la valeur 5.
but en utilisant les lignes de code suivantes:
l=[]
for i, row in df.iterrows():
try:
if df["M"].iloc[i]!=df["M"].iloc[i+1] and df["M"].iloc[i]!=df["M"].iloc[i-1]:
l.append(i)
except:
pass
df = df.drop(df.index[l]).reset_index(drop=True)
Pouvez-vous suggérer une façon plus intelligente et plus efficace d'atteindre mon objectif? peut-être en utilisant une fonction intégrée de pandas?
Voici ce que le dataframe devrait ressembler à:
Before:
A M
0 a 11 <----Must be removed
1 s 4 <----Must be removed
2 d 9 <----Must be removed
3 f 2
4 g 2
5 h 5
6 j 5
7 k 6
8 l 6
After
A M
0 f 2
1 g 2
2 h 5
3 j 5
4 k 6
5 l 6
Qu'en est-:. 'Df.loc [df.M.diff() eq (0) | df.M.diff (-1) .eq (0)] '? – MaxU
@MaxU Nice solution, ajouter que comme une réponse mec ~ :) – Wen
il serait semblable à la vôtre et jezraels ... S'il vous plaît n'hésitez pas à l'ajouter à votre réponse ;-) – MaxU