Python reads a column of data from the csv file and defines two pattern, to determine the change interval.

Python reads a column of data from the csv file and defines two pattern, [- 1,1,1] and [1,-1,-1] to determine different change intervals

.

grab stock data and determine the range of changes in the stock.

Date 3D10
2017-9-121
2017-9-131
2017-9-141
2017-9-151
2017-9-161
2017-9-191
2017-9-201
2017-9-21 1
2017-9-21 1
2017-9-23 1
2017-9-26 1
2017-9-27 1
2017-9-28-28 1
2017-10-7 1
2017-10-11 1
2017-10-11 1
2017-10-121
2017-10-131
2017-10-141
2017-10-17 1
2017-10-18 1
2017-10-19 1
2017-10-201
2017-10-21 1
2017-10-24 1
2017-10-25 1
1
2017-11-41
2017-11-7 1
2017-11-8 1
2017-11-9 1
2017-11-101
2017-11-11-11
2017-11-14-1
2017-11-15-1
2017-11-16-1
2017-11-17-1
2017-11-18-1
2017-11-21-1
2017-1 1
2017-12-11
2017-12-21
2017-12-51
2017-12-61
2017-12-71
2017-12-8 1
2017-12-9 1
2017-12-121
2017-12-131
2017-12-141
2017-12-151
2017-12-16 1
2017-12-19 1
1
2017-12-301
2018-1-31
2018-1-41
2018-1-51
2018-1-61
2018-1-9 1
2018-1-101
2018-1-11 1
2018-1-121
2018-1-131
2018-1-17 1
2018-1-18 1
2018-1-19 1 < br 1
2018-1-31 1
2018-2-1-1
2018-2-2-1
2018-2-3-1
2018-2-6-1
2018-2-7-1
2018-2-8-1
2018-2-9-1
2018-2-10-1
2018-2-13-1
2018-2-14-1 2-23 1
2018-2-24 1
2018-2-27 1
2018-2-28 1
2018-3-1
2018-3-2-1
2018-3-3-1
2018-3-6-1
2018-3-7-1
2018-3-8-1
2018-3-9-1
2018-3-10 1
2018-3-13 1 < br 20-1
2018-3-21-1
2018-3-22-1
2018-3-23-1
2018-3-24-1
2018-3-27-1
2018-3-28-1
2018-3-29-1
2018-3-30-1
2018-4-3-1
2018-4-4-1
2018-4-5-1
2018-4-4-1 121
2018-4-131
2018-4-141
2018-4-17 1
2018-4-18 1
2018-4-19 1
2018-4-201
2018-4-21 1
2018-4-24 1
2018-4-25-1
2018-4-26-1
2018-4-27-1
2018-4-28-1
2018-5-5 -1
2018-5-8 1
2018-5-9 1
2018-5-101
2018-5-11 1
2018-5-121
2018-5-151
2018-5-161
2018-5-171
2018-5-18 1
2018-5-19 1
2018-5-221
2018-5-23 1
2018-5-24 1 < 2-1
2018-6-5-1
2018-6-61
2018-6-7 1
2018-6-8 1
2018-6-9 1
2018-6-121
2018-6-131
2018-6-141
2018-6-151
2018-6-161
2018-6-19-1
2018-6-20-1
2018-6 -1
2018-6-29-1
2018-6-30-1
2018-7-3-1
2018-7-4-1
2018-7-6-1
2018-7-7-1
2018-7-101
2018-7-11 1
2018-7-121
2018-7-131
2018-7-141
2018-7-17 1
2018-

clipboard.png

::

clipboard.png

Apr.01,2021

I have a method, but I think it's a little complicated. There should be other simple ways. Take a look at it for a moment:

import pandas as pd
from io import StringIO 

s = """
Date 3D10
2017-9-12 1
2017-9-13 1
2017-9-14 1
2017-9-15 1
2017-9-16 1
2017-9-19 1
2017-9-20 1
2017-9-21 1
2017-9-22 1
2017-9-23 1
2017-9-26 1
...
2018-7-18 1
2018-7-19 1
2018-7-20 1
"""

df = pd.read_csv(StringIO(s), sep=" ")

df["3D10_shift_1"] = df["3D10"].shift(1)
df["3D10_shift_2"] = df["3D10"].shift(2)
df["m"] = list(zip(df["3D10"], df["3D10_shift_1"], df["3D10_shift_2"]))
df["Date"] = pd.to_datetime(df.Date, format='%Y-%m-%d')

-sharp pattern
res1 = [(d, d+pd.Timedelta(days=1), d+pd.Timedelta(days=2)) for d in df[df.m==(-1,1.0,1.0)].Date.dt.date]

-sharp pattern
res2 = [(d, d+pd.Timedelta(days=1), d+pd.Timedelta(days=2)) for d in df[df.m==(1,-1.0,-1.0)].Date.dt.date]
Menu