使用熊猫计算税额

时间:2018-03-17 14:19:30

标签: python pandas

我需要在熊猫上编写一个函数,它根据以下基础计算每月收入的年度总税额:常规税率 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])

2 个答案:

答案 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()