Python 使用熊猫计算税收

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您

我需要在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您可以这样做:

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为什么。。。