Eu tenho um dataframe do pandas df
contendo 5 linhas e 2 colunas.
A B
0 10 0
1 20 5
2 30 10
3 40 15
4 50 20
df.to_dict()
retorna
{'A': {0: 10, 1: 20, 2: 30, 3: 40, 4: 50},
'B': {0: 0, 1: 5, 2: 10, 3: 15, 4: 20}}
Para a coluna A, quero mudar cada item para duas linhas abaixo. Em vez de ter nan
valores em cima, quero trazer dois elementos que seriam empurrados de baixo para cima.
Para a coluna B, quero fazer o oposto - mudar cada item para duas linhas acima. Em vez de ter nan
valores na parte inferior, quero trazer dois elementos que seriam empurrados de cima para baixo.
Eu posso usar df["A"].shift(2)
e df["B"].shift(-2)
. No entanto, recebo valores nan.
Meus resultados esperados são:
A B
0 40 10
1 50 15
2 10 20
3 20 0
4 30 5
Como posso conseguir isso?
Use
numpy.roll
em vez dissoshift
: