Este é o meu DataFrame:
import pandas as pd
df = pd.DataFrame(
{
'a': [101, 90, 11, 120, 1]
}
)
E esta é a saída que eu quero. Quero criar uma coluna y
:
a y
0 101 101.0
1 90 101.0
2 11 90.0
3 120 120.0
4 1 120.0
Basicamente, os valores in a
são comparados com o valor anterior, e o maior é selecionado.
Por exemplo, para row 1
, 90 é comparado com 101. 101 é maior, por isso é selecionado.
Eu fiz desta maneira:
df['x'] = df.a.shift(1)
df['y'] = df[['a', 'x']].max(axis=1)
Existe um limpador ou algum tipo de maneira integrada de fazer isso?
Você pode usar
np.fmax
para obter os máximos sem criar uma coluna adicional:Isso produz:
Costumamos
np.fmax()
ignorar oNaN
criado durante a mudançadf["a"]
.