Как сместить точно по году или месяцу? - PullRequest
0 голосов
/ 12 февраля 2020
ts=pd.DataFrame(np.arange(3000).reshape(1500,2),
                  index=pd.date_range(start='20150101',periods=1500),
                  columns=['A','B'])

ts['C']=ts['A'].shift(periods=1,freq='10D',axis=0,fill_value=None)

Данные результата будут выглядеть так:

             A   B     C
2015-01-01   0   1   NaN
2015-01-02   2   3   NaN
2015-01-03   4   5   NaN
2015-01-04   6   7   NaN
2015-01-05   8   9   NaN
2015-01-06  10  11   NaN
2015-01-07  12  13   NaN
2015-01-08  14  15   NaN
2015-01-09  16  17   NaN
2015-01-10  18  19   NaN
2015-01-11  20  21   0.0
2015-01-12  22  23   2.0
2015-01-13  24  25   4.0
2015-01-14  26  27   6.0
2015-01-15  28  29   8.0
2015-01-16  30  31  10.0
2015-01-17  32  33  12.0
2015-01-18  34  35  14.0
2015-01-19  36  37  16.0
2015-01-20  38  39  18.0

Когда я использую freq = '1Y', результат покажет эту ошибку

ValueError: cannot reindex from a duplicate axis

То, что я хочу, это таким образом, сдвиг на один год.

             A   B     C
2015-01-01   0   1   NaN
2015-01-02   2   3   NaN
2015-01-03   4   5   NaN
2015-01-04   6   7   NaN
2015-01-05   8   9   NaN
2015-01-06  10  11   NaN
2015-01-07  12  13   NaN
2015-01-08  14  15   NaN
2015-01-09  16  17   NaN
2015-01-10  18  19   NaN
...
2016-01-01  730 731  0
2016-01-02  732 733  2
2016-01-03  733 734  4
2016-01-04  734 735  6
2016-01-05  735 736  8
2016-01-06  736 737  10
2016-01-07  737 738  12
2016-01-08  738 739  14
2016-01-09  739 740  16
2016-01-10  740 741  18

И я нашел следующую информацию

A, Y частота конца года BA, BY частота конца финансового года AS, YS частота начала года BAS, BYS частота начала финансового года

https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries -offset-aliases

Я имею в виду смещение 365D, но есть проблема с високосным годом.

Итак как я могу сдвинуть данные ровно за один год?

...