Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.46 KB | None | 0 0
  1. In [66]: a
  2. Out[66]:
  3. Sales_1 Sales_2 Sales_3
  4. 0 200000 300000 100000
  5. 1 100000 500000 500000
  6. 2 400000 1000000 200000
  7.  
  8. In [67]: b
  9. Out[67]:
  10. Commission
  11. Sales
  12. 50000 0.05
  13. 250000 0.04
  14. 750000 0.03
  15. 9999999999 0.02
  16.  
  17. In [68]: c = b['Commission'][a <= b.index.values]
  18. Traceback (most recent call last):
  19.  
  20. File "<ipython-input-68-d229bce29f01>", line 1, in <module>
  21. c = b['Commission'][a <= b.index.values]
  22.  
  23. File "C:WinPython64bitpython-3.5.2.amd64libsite-packagespandascoreops.py", line 1184, in f
  24. res = self._combine_const(other, func, raise_on_error=False)
  25.  
  26. File "C:WinPython64bitpython-3.5.2.amd64libsite-packagespandascoreframe.py", line 3555, in _combine_const
  27. raise_on_error=raise_on_error)
  28.  
  29. File "C:WinPython64bitpython-3.5.2.amd64libsite-packagespandascoreinternals.py", line 2911, in eval
  30. return self.apply('eval', **kwargs)
  31.  
  32. File "C:WinPython64bitpython-3.5.2.amd64libsite-packagespandascoreinternals.py", line 2890, in apply
  33. applied = getattr(b, f)(**kwargs)
  34.  
  35. File "C:WinPython64bitpython-3.5.2.amd64libsite-packagespandascoreinternals.py", line 1132, in eval
  36. result = get_result(other)
  37.  
  38. File "C:WinPython64bitpython-3.5.2.amd64libsite-packagespandascoreinternals.py", line 1103, in get_result
  39. result = func(values, other)
  40.  
  41. ValueError: operands could not be broadcast together with shapes (3,3) (4,)
  42.  
  43. In [59]: a
  44. Out[59]:
  45. Sales_1 Sales_2 Sales_3
  46. 0 200000 300000 100000
  47. 1 100000 500000 500000
  48. 2 400000 1000000 200000
  49.  
  50. In [60]: b
  51. Out[60]:
  52. Commission
  53. Sales
  54. 50000 0.05
  55. 250000 0.04
  56. 750000 0.03
  57. 9999999999 0.02
  58.  
  59. In [61]: c = b.lookup(a['Sales_1'],['Commission'])
  60. Traceback (most recent call last):
  61.  
  62. File "<ipython-input-61-99e8134e826c>", line 1, in <module>
  63. c = b.lookup(a['Sales_1'],['Commission'])
  64.  
  65. File "C:WinPython64bitpython-3.5.2.amd64libsite-packagespandascoreframe.py", line 2649, in lookup
  66. raise ValueError('Row labels must have same size as column labels')
  67.  
  68. ValueError: Row labels must have same size as column labels
  69.  
  70. pd.cut(a.stack(), [0] + b.Sales.tolist(), labels=b.Commission).unstack()
  71. Out[39]:
  72. Sales_1 Sales_2 Sales_3
  73. 0 0.04 0.03 0.04
  74. 1 0.04 0.03 0.03
  75. 2 0.03 0.02 0.04
  76.  
  77. Sales Commission
  78. 0 -inf NaN
  79. 1 50000 0.05
  80. 2 250000 0.04
  81. 3 750000 0.03
  82. 4 inf 0.02
  83.  
  84. pd.cut(a.stack(), b.Sales, labels=b.Commission[1:]).unstack()
  85.  
  86. pd.DataFrame(
  87. b.Commission.values[
  88. b.index.values.searchsorted(a.values.ravel())
  89. ].reshape(a.values.shape),
  90. a.index, a.columns)
  91.  
  92. Sales_1 Sales_2 Sales_3
  93. 0 0.04 0.03 0.04
  94. 1 0.04 0.03 0.03
  95. 2 0.03 0.02 0.04
  96.  
  97. a_ = a.stack().sort_values().to_frame('Sales')
  98. b_ = pd.DataFrame(dict(
  99. Sales=np.append(0, b.index[:-1]),
  100. Commissions=b.Commission.values
  101. ))
  102.  
  103. print(a_)
  104. print()
  105. print(b_)
  106.  
  107. Sales
  108. 0 Sales_3 100000
  109. 1 Sales_1 100000
  110. 0 Sales_1 200000
  111. 2 Sales_3 200000
  112. 0 Sales_2 300000
  113. 2 Sales_1 400000
  114. 1 Sales_2 500000
  115. Sales_3 500000
  116. 2 Sales_2 1000000
  117.  
  118. Commissions Sales
  119. 0 0.05 0
  120. 1 0.04 50000
  121. 2 0.03 250000
  122. 3 0.02 750000
  123.  
  124. pd.merge_asof(a_, b_).set_index(a_.index).Commissions.unstack()
  125.  
  126. Sales_1 Sales_2 Sales_3
  127. 0 0.04 0.03 0.04
  128. 1 0.04 0.03 0.03
  129. 2 0.03 0.02 0.04
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement