我有这样的一个数据框:
ID Date Value
0 A 2018-01-01 -1.452486
1 A 2018-01-02 -0.554813
2 A 2018-01-03 0.710189
3 A 2018-01-04 1.980976
4 A 2018-01-05 1.586007
... ... ... ...
1090 C 2018-12-27 0.020119
1091 C 2018-12-28 -0.720705
1092 C 2018-12-29 -0.124303
1093 C 2018-12-30 0.921005
1094 C 2018-12-31 0.073129
每组ID都有一行,其中
value
为100: ID Date Value
54 A 2018-02-24 100.0
554 B 2018-07-09 100.0
854 C 2018-05-05 100.0
现在我想根据DataFrame的Date
选择一个子集,其value
为100,并向后2周:
ID Date Value
41 A 2018-02-11 0.841923
42 A 2018-02-12 -1.116607
43 A 2018-02-13 0.560046
44 A 2018-02-14 -0.359288
45 A 2018-02-15 2.091080
46 A 2018-02-16 -0.827285
47 A 2018-02-17 0.061536
48 A 2018-02-18 0.536367
49 A 2018-02-19 0.379075
50 A 2018-02-20 0.442490
51 A 2018-02-21 -0.461630
52 A 2018-02-22 0.496318
53 A 2018-02-23 1.478587
54 A 2018-02-24 100.000000
541 B 2018-06-26 -0.425352
542 B 2018-06-27 0.489837
543 B 2018-06-28 2.421981
544 B 2018-06-29 2.068240
545 B 2018-06-30 0.733924
546 B 2018-07-01 -0.505563
547 B 2018-07-02 -0.199901
548 B 2018-07-03 1.116411
549 B 2018-07-04 -0.652445
550 B 2018-07-05 2.327285
551 B 2018-07-06 0.443507
552 B 2018-07-07 0.227356
553 B 2018-07-08 -0.951611
554 B 2018-07-09 100.000000
841 C 2018-04-22 -0.214560
842 C 2018-04-23 1.189581
843 C 2018-04-24 0.375965
844 C 2018-04-25 1.721489
845 C 2018-04-26 0.819428
846 C 2018-04-27 -0.777456
847 C 2018-04-28 -0.560471
848 C 2018-04-29 -0.437284
849 C 2018-04-30 -0.786168
850 C 2018-05-01 0.780642
851 C 2018-05-02 -0.634718
852 C 2018-05-03 1.541415
853 C 2018-05-04 -0.905156
854 C 2018-05-05 100.000000
我尝试过groupby()
, filter()
, 和 between_time()
,但都没有得到所需的输出结果。
以下是上述输入数据框:
from itertools import chain
import random
import pandas as pd
import numpy as np
df_1 = pd.DataFrame({
'ID' : list(chain.from_iterable([['A'] * 365, ['B'] * 365, ['C'] * 365])),
'Date' : pd.date_range(start = '2018-01-01', end = '2018-12-31').tolist() + pd.date_range(start = '2018-01-01', end = '2018-12-31').tolist() + pd.date_range(start = '2018-01-01', end = '2018-12-31').tolist(),
'Value' : np.random.randn(365 * 3)
})
df_1.iloc[54, 2] = 100
df_1.iloc[554, 2] = 100
df_1.iloc[854, 2] = 100
谢谢您的帮助!