- Notifications
You must be signed in to change notification settings - Fork 110
Open
Description
Ignore length check
when groupby, the data length changes.
If bottleneck could be the same as talib and not throw any errors, it would be great
import numpy as np import pandas as pd import talib as ta import bottleneck as bn pd._testing._N = 10 pd._testing._K = 4 df = pd._testing.makeTimeDataFrame() df.iloc[:5, 2:] = np.nan print(df) """ A B C D 2000-01-03 -0.871075 0.698964 NaN NaN 2000-01-04 -0.096067 0.305798 NaN NaN 2000-01-05 -1.691204 -1.157270 NaN NaN 2000-01-06 -1.538781 0.688315 NaN NaN 2000-01-07 -0.435411 0.337505 NaN NaN 2000-01-10 -0.874476 -0.291829 0.144669 0.594654 2000-01-11 0.613167 -0.082849 1.034253 -0.036335 2000-01-12 0.452147 0.610120 1.045389 1.367216 2000-01-13 0.401962 -0.193553 0.182087 -1.482994 2000-01-14 -1.078286 0.129149 0.491651 -0.000052 """ df = pd.DataFrame(df.stack(), columns=['CLOSE']) df.index.names = ['date', 'asset'] print(df.tail()) """ CLOSE date asset 2000-01-13 D -1.482994 2000-01-14 A -1.078286 B 0.129149 C 0.491651 D -0.000052 """ df['SMA'] = df['CLOSE'].groupby('asset', group_keys=False).apply(lambda x: ta.SMA(x, 5)) df['move_mean'] = df['CLOSE'].groupby('asset', group_keys=False).apply(lambda x: pd.Series(bn.move_mean(x, 5), index=x.index)) print(df.tail()) """ CLOSE SMA move_mean date asset 2000-01-13 D -1.482994 NaN NaN 2000-01-14 A -1.078286 -0.097097 -0.097097 B 0.129149 0.034208 0.034208 C 0.491651 0.579610 0.579610 D -0.000052 0.088498 0.088498 """ df['SMA'] = df['CLOSE'].groupby('asset', group_keys=False).apply(lambda x: ta.SMA(x, 8)) df['move_mean'] = df['CLOSE'].groupby('asset', group_keys=False).apply(lambda x: pd.Series(bn.move_mean(x, 8), index=x.index)) print(df.tail()) """ df['move_mean'] = df['CLOSE'].groupby('asset', group_keys=False).apply(lambda x: pd.Series(bn.move_mean(x, 8), index=x.index)) ^^^^^^^^^^^^^^^^^^ ValueError: Moving window (=8) must between 1 and 5, inclusive """
There may be two areas that need to be modified
https://github.com/pydata/bottleneck/blob/master/bottleneck/src/move_template.c#L993
https://github.com/pydata/bottleneck/blob/master/bottleneck/src/nonreduce_axis_template.c#L62
Metadata
Metadata
Assignees
Labels
No labels