我有一個如下所示的DataFrame。假設這些是銷售人員的銷售額。將查找表應用於DataFrame的垃圾箱或範圍
另外,我有一個由金額包含佣金的查找表。這看起來像下面。所以,$ 0 - $ 50,000 = 5%,$ 50,001- $ 250,000個= 4%,等等
我想要做的就是應用查找表的銷售表產生以下數據幀。
嘗試1:
In [66]: a
Out[66]:
Sales_1 Sales_2 Sales_3
0 200000 300000 100000
1 100000 500000 500000
2 400000 1000000 200000
In [67]: b
Out[67]:
Commission
Sales
50000 0.05
250000 0.04
750000 0.03
9999999999 0.02
In [68]: c = b['Commission'][a <= b.index.values]
Traceback (most recent call last):
File "<ipython-input-68-d229bce29f01>", line 1, in <module>
c = b['Commission'][a <= b.index.values]
File "C:\WinPython64bit\python-3.5.2.amd64\lib\site-packages\pandas\core\ops.py", line 1184, in f
res = self._combine_const(other, func, raise_on_error=False)
File "C:\WinPython64bit\python-3.5.2.amd64\lib\site-packages\pandas\core\frame.py", line 3555, in _combine_const
raise_on_error=raise_on_error)
File "C:\WinPython64bit\python-3.5.2.amd64\lib\site-packages\pandas\core\internals.py", line 2911, in eval
return self.apply('eval', **kwargs)
File "C:\WinPython64bit\python-3.5.2.amd64\lib\site-packages\pandas\core\internals.py", line 2890, in apply
applied = getattr(b, f)(**kwargs)
File "C:\WinPython64bit\python-3.5.2.amd64\lib\site-packages\pandas\core\internals.py", line 1132, in eval
result = get_result(other)
File "C:\WinPython64bit\python-3.5.2.amd64\lib\site-packages\pandas\core\internals.py", line 1103, in get_result
result = func(values, other)
ValueError: operands could not be broadcast together with shapes (3,3) (4,)
嘗試2:
In [59]: a
Out[59]:
Sales_1 Sales_2 Sales_3
0 200000 300000 100000
1 100000 500000 500000
2 400000 1000000 200000
In [60]: b
Out[60]:
Commission
Sales
50000 0.05
250000 0.04
750000 0.03
9999999999 0.02
In [61]: c = b.lookup(a['Sales_1'],['Commission'])
Traceback (most recent call last):
File "<ipython-input-61-99e8134e826c>", line 1, in <module>
c = b.lookup(a['Sales_1'],['Commission'])
File "C:\WinPython64bit\python-3.5.2.amd64\lib\site-packages\pandas\core\frame.py", line 2649, in lookup
raise ValueError('Row labels must have same size as column labels')
ValueError: Row labels must have same size as column labels
誰能幫我申請一個查找表的數據幀?它不必完全像這樣,但是這說明了我的一般需求。
pd.cut'的'大用途! +1 :-) – pansen
謝謝。 PS:我真的會重新安排'b'來達到我可以通過b。銷售額和'b.Commission [1:]'以獲得更好的清晰度 – Boud
'b'應該如何安排@Boud?我很樂意讓這個更好/更容易/更清晰。 – Kyle