I want to use cummin but it doesnt work, It shows zero, cummax work well.
my code:
df = pd.DataFrame(df, columns=['symbol', 'timestamp', 'open', 'high', 'low', 'close', 'volume']) df["min_Close"] = df.close.shift(fill_value=0).cummin() df["max_Close"] = df.close.shift(fill_value=0).cummax() print(df)
original df:
symbol timestamp open high low close volume 0 AAVEUSDT 1663186500000 81.70 81.90 81.65 81.80 405.54 1 AAVEUSDT 1663186800000 81.80 81.85 81.70 81.75 233.11 2 AAVEUSDT 1663187100000 81.75 82.05 81.75 81.75 346.30 3 AAVEUSDT 1663187400000 81.75 81.90 81.60 81.90 126.11 4 AAVEUSDT 1663187700000 81.90 81.95 81.70 81.75 260.90 5 AAVEUSDT 1663188000000 81.75 81.75 81.60 81.65 274.26
my result :
symbol timestamp open high low close volume min_Close max_Close 0 AAVEUSDT 1663186500000 81.70 81.90 81.65 81.80 405.54 0.0 0.00 1 AAVEUSDT 1663186800000 81.80 81.85 81.70 81.75 233.11 0.0 81.80 2 AAVEUSDT 1663187100000 81.75 82.05 81.75 81.75 346.30 0.0 81.80 3 AAVEUSDT 1663187400000 81.75 81.90 81.60 81.90 126.11 0.0 81.80 4 AAVEUSDT 1663187700000 81.90 81.95 81.70 81.75 260.90 0.0 81.90 5 AAVEUSDT 1663188000000 81.75 81.75 81.60 81.65 274.26 0.0 81.90
Advertisement
Answer
It is expected, because after shift first value is 0
, so after cummin
is here always 0
(until negative value):
print (df.close.shift(fill_value=0)) 0 0.00 1 81.80 2 81.75 3 81.75 4 81.90 5 81.75 Name: close, dtype: float64
Remove fill_value=0
for NaN
instead 0
for first value in Series.shift
, last if necessary replace first missing value by Series.fillna
:
print (df.close.shift()) 0 NaN 1 81.80 2 81.75 3 81.75 4 81.90 5 81.75 Name: close, dtype: float64 df["min_Close"] = df.close.shift().cummin().fillna(0) print (df) symbol timestamp open high low close volume min_Close 0 AAVEUSDT 1663186500000 81.70 81.90 81.65 81.80 405.54 0.00 1 AAVEUSDT 1663186800000 81.80 81.85 81.70 81.75 233.11 81.80 2 AAVEUSDT 1663187100000 81.75 82.05 81.75 81.75 346.30 81.75 3 AAVEUSDT 1663187400000 81.75 81.90 81.60 81.90 126.11 81.75 4 AAVEUSDT 1663187700000 81.90 81.95 81.70 81.75 260.90 81.75 5 AAVEUSDT 1663188000000 81.75 81.75 81.60 81.65 274.26 81.75