如何将 np.diff 与 python 中的参考点一起使用

how to use np.diff with reference point in python

我有一个带有时间戳的数据集。

import pandas as pd
data = pd.DataFrame({'date': pd.to_datetime(['1992-01-01', '1992-02-01',
                                             '1992-03-01', '1992-04-01',
                                             '1992-05-01']),
                      'sales': [10, 20, 30, 40, 50],
                      'price': [4302, 4323, 4199, 4397, 4159]})

我正在尝试将它们与 np.diff(data['price'])price 列区分开来。但是,我想为带有时间戳的第一行提供一个参考点,1992-01-01。 我的 reference value is 4100 和我希望得到下面给出的数据集:

    date,   sales,   diff_price
1992-01-01,  10,      4302-4100 
1992-02-01,  20,      4323-4302
1992-03-01,  30,      4199-4323
1992-04-01,  40,      4397-4199
1992-05-01,  50,      4159-4397

有没有简单的方法可以在不以 pythonic 方式更改数据结构的情况下做到这一点?

我们可以使用np.diffprepend参数来设置Series开头的参考值(4100):

reference_value = 4100
data['diff_price'] = np.diff(data['price'], prepend=reference_value)

或者我们可以 Series.shift 使用参考 (4100) 的 fill_value 并减去:

reference_value = 4100
data['diff_price'] = (
        data['price'] - data['price'].shift(fill_value=reference_value)
)

任何一种方法都会产生 data:

        date  sales  price  diff_price
0 1992-01-01     10   4302         202
1 1992-02-01     20   4323          21
2 1992-03-01     30   4199        -124
3 1992-04-01     40   4397         198
4 1992-05-01     50   4159        -238