如何将 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.diff
的prepend
参数来设置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
我有一个带有时间戳的数据集。
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.diff
的prepend
参数来设置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