gpt4 book ai didi

python - Pandas 事件研究

转载 作者:行者123 更新时间:2023-11-30 22:39:19 25 4
gpt4 key购买 nike

假设我有一个时间序列:

pd.Series(np.random.rand(20), index=pd.date_range("1990-01-01",periods=20))

这给出了,

1990-01-01    0.018363
1990-01-02 0.288625
1990-01-03 0.460708
1990-01-04 0.663063
1990-01-05 0.434250
1990-01-06 0.504893
1990-01-07 0.587743
1990-01-08 0.412223
1990-01-09 0.604656
1990-01-10 0.960338
1990-01-11 0.606765
1990-01-12 0.110480
1990-01-13 0.671683
1990-01-14 0.178488
1990-01-15 0.458074
1990-01-16 0.219303
1990-01-17 0.172665
1990-01-18 0.429534
1990-01-19 0.505891
1990-01-20 0.242567
Freq: D, dtype: float64

假设事件日期为 1990-01-05 和 1990-01-15。我想将数据子集化为围绕事件的长度为 (-2,+2) 的窗口,如下所示:

1990-01-03    0.460708
1990-01-04 0.663063
1990-01-05 0.434250
1990-01-06 0.504893
1990-01-07 0.587743
1990-01-13 0.671683
1990-01-14 0.178488
1990-01-15 0.458074
1990-01-16 0.219303
1990-01-17 0.172665
Freq: D, dtype: float64

我应该怎样做呢?

最佳答案

我认为你可以使用concat列表理解使用 loc 创建的所有系列 :

date1 = pd.to_datetime('1990-01-05')
date2 = pd.to_datetime('1990-01-15')
window = 2

dates = [date1, date2]

s1 = pd.concat([s.loc[date - pd.Timedelta(window, unit='d'):
date + pd.Timedelta(window, unit='d')] for date in dates])
print (s1)
1990-01-03 0.284356
1990-01-04 0.997019
1990-01-05 0.293225
1990-01-06 0.451379
1990-01-07 0.743209
1990-01-13 0.254926
1990-01-14 0.339728
1990-01-15 0.793124
1990-01-16 0.121002
1990-01-17 0.930924
dtype: float64

关于python - Pandas 事件研究,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43202696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com