Создавать новое поле внутри таблицы и вводить стоимость другого, но беря стоимость следующей линии

Я комментирую вам: Я задал ранее вопрос "Создавать новое поле внутри таблицы и вводить стоимость другого, но беря стоимость предыдущей линии" и уже решил ее. Сейчас я появляется другая проблема и состоит в том, что я хочу сделать то же самое, но беря стоимость следующей линии. Здесь я помещаю вам код, который использует в моем предыдущем вопросе посмотрим, ты мог бы говорить мне, как брать стоимость следующей линии.

import pyodbc
import pandas as pd
import numpy as np

df = pd.DataFrame({'IdActivo': [1,2,3,3,2,1,1,3,2],
                   'Fecha' : ['2009-01-01','2009-02-01','2009-02-01','2009-03-01','2009-03-01','2009-03-01','2009-04-01','2009-04-01','2009-04-01'],
                   'Cierre' : [25.5,26.04,88.8,26.8,24.8,27.5,23.05,27.8,30.20]})

NumIntervalo =2 # Me he creado una variable para poner el número de intervalo que quiero mostrar. Así sólo con cambiar el valor aquí no tendré que modificar el procedimiento.

def Cierre1(df,NumIntervalo):
    ord_df = df.sort_values(by=['IdActivo', 'Fecha'])
    ord_df ['Cierre1'] = ord_df['Cierre'].shift(NumIntervalo)
    idx = ord_df.iloc[NumIntervalo:]['IdActivo'].values != ord_df.iloc[:len(ord_df) - NumIntervalo]['IdActivo'].values
    for i in range(NumIntervalo):
        idx = np.append([False], idx)


    ord_df.loc[idx, 'Cierre1'] = np.nan
    print(ord_df)

Cierre1(df,NumIntervalo)

Я попробовал помещать в негатив стоимость NumIntervalo внутри процедуры, но он не выходит у меня результаты, которые я хочу. Я помещаю вам изображение, как он хотел, чтобы появились данные правильно.

introducir la descripción de la imagen aquí

Ожидая вашей помощи я прощаюсь внимательно.

Charo

0
задан 24.01.2017, 22:02
0 ответов

Уже я решил мою проблему, так что здесь я помещаю вам конечный результат, если он интересует кого-то. Этот код, который у меня есть в конце концов:

import pyodbc
import pandas as pd
import numpy as np

df = pd.DataFrame({'IdActivo': [1,2,3,3,2,1,1,3,2],
                   'Fecha' : ['2009-01-01','2009-02-01','2009-02-01','2009-03-01','2009-03-01','2009-03-01','2009-04-01','2009-04-01','2009-04-01'],
                   'Cierre' : [25.5,26.04,88.8,26.8,24.8,27.5,23.05,27.8,30.20]})

NumIntervalo = 2 # Me he creado una variable para poner el número de intervalo que quiero mostrar. Así sólo con cambiar el valor aquí no tendré que modificar el procedimiento.

def Cierre1(df,NumIntervalo):
    ord_df = df.sort_values(by=['IdActivo', 'Fecha'])
    ord_df ['Cierre1'] = ord_df['Cierre'].shift(-NumIntervalo)
    idx = ord_df.iloc[NumIntervalo:]['IdActivo'].values != ord_df.iloc[:len(ord_df) -NumIntervalo]['IdActivo'].values
    ord_df.loc[idx, 'Cierre1'] = np.nan
    print(ord_df)

Cierre1(df,NumIntervalo)

Здесь я помещаю вам изображение с результатом, как он это хотел. Если ты копируешь код в вашей программе, и вы изменяете переменную NumIntervalo вы увидите, что оно функционирует хорошо с другими числами, которые вы помещаете ему. introducir la descripción de la imagen aquí

Приветствие во все.

Charo.

1
ответ дан 03.12.2019, 17:31

Теги

Похожие вопросы