Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- x = pd.Series([1, 4, 3, 2, 1, 6, 2, 8, 3, 0, 1, 2, 1, 5])
- df = pd.DataFrame({"A": x**2+8, "B": x*8, "C": x+34, "D": (x*x)+5})
- # размер окна в строках
- repr_select = 4
- df
- def fun(win, df):
- data = np.full((df.shape[0], win*df.shape[1]), np.nan)
- for i in range(win, len(df)):
- data[i] = df.iloc[i-win:i].values.ravel()
- return pd.DataFrame(data, index=df.index)
- res = df.join(fun(4, df))
- In [110]: res
- Out[110]:
- A B C D 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- 0 9 8 35 6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
- 1 24 32 38 21 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
- 2 17 24 37 14 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
- 3 12 16 36 9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
- 4 9 8 35 6 9.0 8.0 35.0 6.0 24.0 32.0 38.0 21.0 17.0 24.0 37.0 14.0 12.0 16.0 36.0 9.0
- 5 44 48 40 41 24.0 32.0 38.0 21.0 17.0 24.0 37.0 14.0 12.0 16.0 36.0 9.0 9.0 8.0 35.0 6.0
- 6 12 16 36 9 17.0 24.0 37.0 14.0 12.0 16.0 36.0 9.0 9.0 8.0 35.0 6.0 44.0 48.0 40.0 41.0
- 7 72 64 42 69 12.0 16.0 36.0 9.0 9.0 8.0 35.0 6.0 44.0 48.0 40.0 41.0 12.0 16.0 36.0 9.0
- 8 17 24 37 14 9.0 8.0 35.0 6.0 44.0 48.0 40.0 41.0 12.0 16.0 36.0 9.0 72.0 64.0 42.0 69.0
- 9 8 0 34 5 44.0 48.0 40.0 41.0 12.0 16.0 36.0 9.0 72.0 64.0 42.0 69.0 17.0 24.0 37.0 14.0
- 10 9 8 35 6 12.0 16.0 36.0 9.0 72.0 64.0 42.0 69.0 17.0 24.0 37.0 14.0 8.0 0.0 34.0 5.0
- 11 12 16 36 9 72.0 64.0 42.0 69.0 17.0 24.0 37.0 14.0 8.0 0.0 34.0 5.0 9.0 8.0 35.0 6.0
- 12 9 8 35 6 17.0 24.0 37.0 14.0 8.0 0.0 34.0 5.0 9.0 8.0 35.0 6.0 12.0 16.0 36.0 9.0
- 13 33 40 39 30 8.0 0.0 34.0 5.0 9.0 8.0 35.0 6.0 12.0 16.0 36.0 9.0 9.0 8.0 35.0 6.0
- value_list = [1, 2, 3, 4, 5]
- func_list = [lambda x: x**2, lambda w: w+1]
- repr_select = 4
- class Item:
- def __init__(self, fl, rs):
- self.item_len = rs
- self.line = fl*(rs/len(fl))
- self.arg = []
- self.fill = False
- def add_value(self, val):
- self.arg.append(val)
- if len(self.arg) == self.item_len:
- self.fill = True
- def calc(self):
- return [a(b) for a, b in zip(self.line, self.arg)]
- if repr_select % len(func_list) == 0:
- result = []
- ii = Item(func_list, repr_select)
- for value in value_list:
- if ii.fill:
- result.append(ii.calc())
- ii = Item(func_list, repr_select)
- ii.add_value(value)
- if len(ii.arg) != 0:
- result.append(ii.calc())
- print result
- # [[1, 3, 9, 5], [25]]
Add Comment
Please, Sign In to add comment