Meu DataFrame é:
import pandas as pd
df = pd.DataFrame(
{
'x': ['a', 'a', 'a','b', 'b','c', 'c', 'c',],
'y': list(range(8))
}
)
E este é o resultado esperado. Quero criar uma coluna z
:
x y z
0 a 0 NaN
1 a 1 NaN
2 a 2 NaN
3 b 3 3
4 b 4 NaN
5 c 5 NaN
6 c 6 NaN
7 c 7 NaN
A lógica é:
Quero encontrar a primeira linha após o primeiro grupo de linhas duplicadas. Por exemplo, em column x
, o valor a
é o primeiro valor duplicado. Quero encontrar uma linha após o a
término dos valores. E então coloque o y
dessa linha por z
coluna.
Esta é a minha tentativa que não me deu o resultado:
m = (df.x.duplicated())
out = df[m]
Uma opção, usando uma máscara personalizada:
Se o seu primeiro valor for sempre
a
e você quiser encontrar o primeiro não,a
você também poderá usar:Ou, se você tiver certeza de que há pelo menos uma linha após os
a
s iniciais:Saída:
Alguns intermediários (todas as abordagens):