
Coger datos de un registro anterior e introducirlo en registro siguiente
Publicado por Rosario (13 intervenciones) el 20/01/2017 16:32:37
Quisiera hacer lo siguiente: Tengo una tabla con varios campos 'IdActivo,Fecha,Cierre' y quiero añadirle otro campo nuevo 'Cierre_1' el cual quiero introducir los valores que hay en el campo Cierre pero cogiendo el valor anterior al registro en el que estoy. Aquí os pongo una imagen de los datos de mi tabla y he puesto el campo que me gustaría crear con los datos resultantes a ver si me podriais ayudar.
Tengo en cuenta que esto lo tengo que hacer para cada tipo de IdActivo distinto. Aquí tengo tres (1,2,3) por eso he ordenado la tabla por IdActivo y Fecha.
Aquí os pongo lo que quiero en la imagen.

Aquí os pongo el código que utilizo:
A ver si me podrías decir como podría coger yo el valor del registro anterior y meterlo en el campo deseado.
Gracias de antemano.
Charo.
Tengo en cuenta que esto lo tengo que hacer para cada tipo de IdActivo distinto. Aquí tengo tres (1,2,3) por eso he ordenado la tabla por IdActivo y Fecha.
Aquí os pongo lo que quiero en la imagen.

Aquí os pongo el código que utilizo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import pyodbc
import pandas as pd
import numpy as np
df = pd.DataFrame({'IdActivo': [1,2,3,3,2,1,3],
'Fecha' : ['2009-01-01','2009-02-01','2009-02-01','2009-03-01','2009-03-01','2009-03-01','2009-04-01'],
'Cierre' : [25.5,26.5,25.8,26.8,24.8,27.5,27.8]})
def Cierre1(df):
ord_df = df.sort_values(by=['IdActivo', 'Fecha'])
ord_df ['Cierre1'] = ord_df.iloc[1:]['Cierre']
idx = ord_df.iloc[1:]['IdActivo'].values != ord_df.iloc[:len(ord_df) - 1]['IdActivo'].values
idx = np.append([True], idx)
ord_df.loc[idx, 'Cierre1'] = np.nan
print(ord_df)
Cierre1(df)
A ver si me podrías decir como podría coger yo el valor del registro anterior y meterlo en el campo deseado.
Gracias de antemano.
Charo.
Valora esta pregunta


0