Я уже задавал свой вопрос, но он был недостаточно точен в описании. Умные люди на этом форуме уже предлагали решения, но я забыл (извините) уточнить, что если в соответствующих столбцах были нули, то их нужно оставить.
Здравствуйте, у меня есть кадр данных, как показано ниже.
2014 2015 2016 2017 2018 2019
2014 10 20 30 40 0 5
2015 0 0 200 0 100 0
2016 0 0 200 140 35 10
2017 0 0 0 20 0 12
Мне нужно получить такой результат:
yearStart yearStart+1 yearStart+2 yearStart+3 yearStart+4
0 10 20 30 40 0
1 0 200 0 100 0
2 200 140 35 10 0
3 20 0 12 0 0
Идея состоит в том, чтобы выбрать в каждой строке столбцы между двумя датами:
index и index +delta, с параметром delta (в этом примере 4), чтобы поместить их в кадр данных.
С iterrows() это занимает слишком много времени.
я пробовал с
df1 = df.apply(lambda x: pd.Series(x[x.keys()>=x.index],1)).fillna(0).astype(int)
но это не работает:
TypeError: ('Index(...) must be called with a collection of some kind,
1 was passed', 'occurred at index 2014')
Спасибо