Python 使用熊猫计算税收
我需要在pandas上写一个函数,根据以下基础计算给定月收入的年总纳税额:正常税率为13%,但当一年的收入超过1000个单位时,从下个月开始征收20%的税款。 例如,calculate_taxpd.Series[150]*12应该返回286.5。这里是月收入 这应该在不使用循环的情况下解决 我能够用固定的13%的收入编写代码:Python 使用熊猫计算税收,python,pandas,Python,Pandas,我需要在pandas上写一个函数,根据以下基础计算给定月收入的年总纳税额:正常税率为13%,但当一年的收入超过1000个单位时,从下个月开始征收20%的税款。 例如,calculate_taxpd.Series[150]*12应该返回286.5。这里是月收入 这应该在不使用循环的情况下解决 我能够用固定的13%的收入编写代码: def calculate_tax(income): t=(income*0.13).cumsum() return(t.iloc[-1]) IIUC您
def calculate_tax(income):
t=(income*0.13).cumsum()
return(t.iloc[-1])
IIUC您可以这样做:
In [114]: %paste
def calculate_tax(income, tax1=0.13, tax2=0.2, thresh=1000):
s = pd.Series([income] * 12)
return (s.mul(tax1 + s.cumsum().gt(thresh)
.shift().fillna(False)
.mul(tax2-tax1))
.cumsum()
.iloc[-1])
## -- End pasted text --
In [115]: calculate_tax(150, 0.13, 0.2, 1000)
Out[115]: 286.5
In [161]: calculate_tax(150)
Out[161]: 286.5
我认为你可以使用:
def calculate_tax(income):
income_cumsum = income.cumsum()
rate = income_cumsum.apply(lambda x: 0.13 if x<=1000 else 0.2).shift(1).fillna(0.13)
return (income*rate).sum()
我需要用一个参数“income”编写函数,已知tax1和tax2为0.13,0.2,它返回序列的真值为ambiguous@PhilippPhilippov,尝试从我的回答中复制并粘贴代码做了所有这些,甚至你的代码和你的函数都不起作用,idk为什么。。。