我需要在熊猫上编写一个函数,它根据以下基础计算每月收入的年度总税额:常规税率 13%,但当年的收入大于< em> 1000 单位,从下个月征收 20%税。
例如,calculate_tax(pd.Series([150]*12)
应返回286.5。这里150是月收入。
这应该在不使用循环的情况下解决 我能够用固定的 13%收入编写代码:
def calculate_tax(income):
t=(income*0.13).cumsum()
return(t.iloc[-1])
答案 0 :(得分:0)
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
答案 1 :(得分:0)
我认为你可以使用:
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()