Если в DataFrame
отсутствуют пропущенные значения, вы можете упростить решение, удалив dropna
и используя DataFrame.fillna
:
dataset = pd.DataFrame({
'B':[4,5,4],
'C':[7,8,9],
'D':[1,3,5],
}, index=[3714, 3715, 3716])
print (dataset)
B C D
3714 4 7 1
3715 5 8 3
3716 4 9 5
dataset_shifted = dataset.shift(1).fillna(1)
print (dataset_shifted)
B C D
3714 1.0 1.0 1.0
3715 4.0 7.0 1.0
3716 5.0 8.0 3.0
Если пропущенные значения возможны, задайте только первую строкупо позиции на DataFrame.iloc
:
dataset_shifted = dataset.shift(1)
dataset_shifted.iloc[0 , :] = 1
Ваше решение должно быть изменено:
dataset_shifted = dataset.shift(1)
dataset_shifted = dataset_shifted.dropna()
dataset_shifted.loc[0 , :] = 1
dataset_shifted = dataset_shifted.sort_index()
print (dataset_shifted)
B C D
0 1.0 1.0 1.0
3715 4.0 7.0 1.0
3716 5.0 8.0 3.0