Guest User

Untitled

a guest
Jan 23rd, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. x = pd.Series([1, 4, 3, 2, 1, 6, 2, 8, 3, 0, 1, 2, 1, 5])
  2. df = pd.DataFrame({"A": x**2+8, "B": x*8, "C": x+34, "D": (x*x)+5})
  3.  
  4. # размер окна в строках
  5. repr_select = 4
  6.  
  7. df
  8.  
  9. def fun(win, df):
  10. data = np.full((df.shape[0], win*df.shape[1]), np.nan)
  11. for i in range(win, len(df)):
  12. data[i] = df.iloc[i-win:i].values.ravel()
  13. return pd.DataFrame(data, index=df.index)
  14.  
  15. res = df.join(fun(4, df))
  16.  
  17. In [110]: res
  18. Out[110]:
  19. A B C D 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  20. 0 9 8 35 6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
  21. 1 24 32 38 21 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
  22. 2 17 24 37 14 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
  23. 3 12 16 36 9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34.  
  35. value_list = [1, 2, 3, 4, 5]
  36.  
  37. func_list = [lambda x: x**2, lambda w: w+1]
  38.  
  39. repr_select = 4
  40.  
  41. class Item:
  42. def __init__(self, fl, rs):
  43. self.item_len = rs
  44. self.line = fl*(rs/len(fl))
  45. self.arg = []
  46. self.fill = False
  47.  
  48. def add_value(self, val):
  49. self.arg.append(val)
  50. if len(self.arg) == self.item_len:
  51. self.fill = True
  52.  
  53. def calc(self):
  54. return [a(b) for a, b in zip(self.line, self.arg)]
  55.  
  56. if repr_select % len(func_list) == 0:
  57. result = []
  58. ii = Item(func_list, repr_select)
  59. for value in value_list:
  60. if ii.fill:
  61. result.append(ii.calc())
  62. ii = Item(func_list, repr_select)
  63. ii.add_value(value)
  64. if len(ii.arg) != 0:
  65. result.append(ii.calc())
  66. print result
  67. # [[1, 3, 9, 5], [25]]
Add Comment
Please, Sign In to add comment