В HashMap
ключ - это объект, который содержит методы hashCode()
и equals(Object)
.
Когда вы вставляете новую запись в карту, она проверяет, является ли hashCode
Уже известно. Затем он перебирает все объекты с помощью этого хэш-кода и проверяет их равенство с .equals()
. Если найден равный объект, новое значение заменяет старое. Если нет, он создаст новую запись на карте.
Обычно, говоря о картах, вы используете столкновение, когда два объекта имеют одинаковые hashCode
, но они разные. Они внутренне хранятся в списке.
diff
должен дать желаемый результат:
>>> df.diff()
count_a count_b
2015-01-01 NaN NaN
2015-01-02 38465 NaN
2015-01-03 36714 NaN
2015-01-04 35137 NaN
2015-01-05 35864 NaN
....
2015-02-07 142390 25552
2015-02-08 126768 22835
2015-02-09 122324 21485
Вы можете использовать метод .rolling_apply(…)
:
diffs_a = pd.rolling_apply(df['count_a'], 2, lambda x: x[0] - x[1])
Альтернативно, если это проще, вы можете напрямую работать с массивами:
count_a_vals = df['count_a'].values
diffs_a = count_a_vals[:-1] - count_a_vals[1:]