用Pandas计算税收

2024-06-16 12:33:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要写一个关于pandas的函数,该函数根据以下基础计算出给定月收入的年度总纳税额:正常税率为13%,但当一年的收入超过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])

Tags: 函数代码pandasdef情况单位基础series
2条回答

你可以这样做:

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

相关问题 更多 >