Python: Como passar método próxima linha DataFrame.apply () linha e?

votos
0

Eu tenho trama de dados com milhares de linhas. A sua estrutura é como a seguir

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

Eu quero comparar o A coluna da linha atual e próxima linha. Se esses valores forem iguais eu quero adicionar o valor da coluna B que tem diminuir o valor de D coluna da linha comparação que tem maior valor. Então eu quero remover o valor da coluna movido da coluna B. É como um processo de troca.

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

Eu tenho milhares de linhas e iLOC, loc, em métodos de trabalho lento. Pelo menos eu quero usar trama de dados de aplicar o método. Eu tentei algumas amostras de código, mas eles não funcionam.

Eu quero fazer algo como abaixo: DataFrame.apply (linha lambda: self.compare (linha, próxima (linha)), eixo = 1))

Eu tenho um método comparar, mas eu não podia deixar passar próxima linha com o método de comparar. Como posso passá-lo para o método? Também estou aberto a ouvir as soluções mais rápido pandas.

Publicado 19/03/2020 em 21:58
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Melhor não fazer isso com applycomo ele vai ser lento; você pode olhar através de shift, por exemplo,

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

Fica um pouco mais complicado se você está fazendo a mudança dentro dos grupos, mas ainda possível.

Respondeu 19/03/2020 em 22:03
fonte usuário

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