Pandas: como encontrar a diferença entre duas linhas
Você pode usar a função DataFrame.diff() para encontrar a diferença entre duas linhas em um DataFrame do pandas.
Esta função usa a seguinte sintaxe:
DataFrame.diff(períodos=1, eixo=0)
Ouro:
- períodos: o número de linhas anteriores para calcular a diferença.
- eixo: encontre a diferença nas linhas (0) ou colunas (1).
Os exemplos a seguir mostram como usar esta função na prática.
Exemplo 1: Encontre a diferença entre cada linha anterior
Suponha que temos o seguinte DataFrame do pandas:
import pandas as pd #createDataFrame df = pd. DataFrame ({' period ': [1, 2, 3, 4, 5, 6, 7, 8], ' sales ': [12, 14, 15, 15, 18, 20, 19, 24], ' returns ': [2, 2, 3, 3, 5, 4, 4, 6]}) #view DataFrame df period sales returns 0 1 12 2 1 2 14 2 2 3 15 3 3 4 15 3 4 5 18 5 5 6 20 4 6 7 19 4 7 8 24 6
O código a seguir mostra como encontrar a diferença entre cada linha atual de um DataFrame e a linha anterior:
#add new column to represent sales differences between each row df[' sales_diff '] = df[' sales ']. diff () #view DataFrame df period sales returns sales_diff 0 1 12 2 NaN 1 2 14 2 2.0 2 3 15 3 1.0 3 4 15 3 0.0 4 5 18 5 3.0 5 6 20 4 2.0 6 7 19 4 -1.0 7 8 24 6 5.0
Observe que também podemos encontrar a diferença entre várias linhas anteriores. Por exemplo, o código a seguir mostra como encontrar a diferença entre cada linha atual e a linha que apareceu três linhas antes:
#add new column to represent sales differences between current row and 3 rows earlier df[' sales_diff '] = df[' sales ']. diff (periods= 3 ) #view DataFrame df period sales returns sales_diff 0 1 12 2 NaN 1 2 14 2 NaN 2 3 15 3 NaN 3 4 15 3 3.0 4 5 18 5 4.0 5 6 20 4 5.0 6 7 19 4 4.0 7 8 24 6 6.0
Exemplo 2: Encontre a diferença com base na condição
Também podemos filtrar o DataFrame para exibir linhas onde a diferença entre a linha atual e a linha anterior é menor ou maior que um determinado valor.
Por exemplo, o código a seguir retorna apenas linhas nas quais o valor da linha atual é menor que o valor da linha anterior:
import pandas as pd #createDataFrame df = pd. DataFrame ({' period ': [1, 2, 3, 4, 5, 6, 7, 8], ' sales ': [12, 14, 15, 13, 18, 20, 19, 24], ' returns ': [2, 2, 3, 3, 5, 4, 4, 6]}) #find difference between each current row and the previous row df[' sales_diff '] = df[' sales ']. diff () #filter for rows where difference is less than zero df = df[df[' sales_diff ']< 0 ] #view DataFrame df period sales returns sales_diff 3 4 13 3 -2.0 6 7 19 4 -1.0
Recursos adicionais
Como encontrar valores únicos em múltiplas colunas no Pandas
Como filtrar um DataFrame do Pandas por valores de coluna
Como selecionar linhas por índice em um DataFrame do Pandas