Python: Comment passer la ligne et la ligne suivante méthode DataFrame.apply ()?

voix
0

Je dataframe avec des rangées de milliers. Sa structure est comme ci-dessous

     A    B    C     D 
 0   q   20    'f'
 1   q   14    'd'
 2   o   20    'a'

Je veux comparer la colonne A de la ligne actuelle et la ligne suivante. Si ces valeurs sont égales, je veux ajouter la valeur de la colonne B qui a abaisser la valeur à la colonne D de la ligne par rapport qui a une plus grande valeur. Ensuite, je veux supprimer la valeur de la colonne de la colonne B. déplacée Il est comme un processus d'échange.

    A    B    C     D 
0   q   20    'f'   14
1   o   20    'a'

J'ai des milliers de lignes et ILOC, loc, à des méthodes de travail lent. Au moins, je veux utiliser la méthode dataframe appliquer. J'ai essayé quelques exemples de code, mais ils ne travaillaient pas.

Je veux faire quelque chose comme ci-dessous: DataFrame.apply (ligne lambda: self.compare (rangée, à côté (ligne)), axe = 1))

J'ai une méthode comparer mais je ne pouvais pas passer la ligne suivante à la méthode comparer. Comment puis-je passer à la méthode? Aussi je suis ouvert à entendre des solutions plus rapidement pandas.

Créé 19/03/2020 à 21:58
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Mieux vaut ne pas le faire avec applycar il sera lent; vous pouvez regarder à l' aide shift, par exemple

df['A_shift'] = df['A'].shift(1)
df['Is_Same'] = 0
df.loc[df.A_shift == df.A, 'Is_Same'] = 1

Obtient un peu plus compliqué si vous faites le changement au sein des groupes, mais toujours possible.

Créé 19/03/2020 à 22:03
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more