Как посчитать разницу значений колонок?

Вопрос вроде не сложный, но не могу решить. Есть таблица из двух колонок и индексного столбца дат. Надо создать третью колонку, и поместить в неё разницу между значениями первой колонки сего дня и второй колонки предыдущего дня.

df = pd.DataFrame({'col01': np.random.rand(100),
              'col02' : np.random.rand(100)},
              index = pd.date_range('1/1/2000', periods=100, freq='B'))
df

Получится следующая таблица:

таблица

Значение третьей колонки должно выглядеть:

    df['col03'] = 0
    df.loc['2000-01-03', 'col03'] = df.loc['2000-01-03', 'col02'] - df.loc['2000-01-04', 'col01']

Но только для всего столбца.


Ответы (1 шт):

Автор решения: strawdog

Вы не поверите:

df = pd.DataFrame({'col01': np.random.rand(100),
              'col02' : np.random.rand(100)},
              index = pd.date_range('1/1/2000', periods=100, freq='B'))

df['col03'] = df['col02']-df['col01'].shift(1)

ваш df (разумеется, числа у нас будут разные):

               col01     col02     col03
2000-01-03  0.049760  0.292412       NaN
2000-01-04  0.792802  0.022108 -0.027652
2000-01-05  0.411132  0.252973 -0.539829
2000-01-06  0.231647  0.300546 -0.110586
2000-01-07  0.680433  0.676711  0.445064
...              ...       ...       ...
2000-05-15  0.733525  0.412041 -0.083264
2000-05-16  0.401303  0.803666  0.070141
2000-05-17  0.496733  0.047584 -0.353719
2000-05-18  0.237565  0.980574  0.483840
2000-05-19  0.539980  0.143298 -0.094267
→ Ссылка